js几种对象创建方式

news2024/10/3 0:25:40

适用于不确定对象内部数据

方式一:

var p = new Object();
p.name = 'TOM';
p.age = 12
p.setName = function(name) {
   this.name = name;
}

// 测试
p.setName('jack')
console.log(p.name,p.age)

方式二: 对象字面量模式

套路:使用{}创建对象,同时指定属性、方法

适用场景:起始时对象内部数据是确定的

问题:如果创建多个对象,有重复代码

var p = {
name: 'TOM',
age: 12,
  setName: function(name) {
    this.name = name;
  }
}

// 测试
console.log(p.name,p.age)// TOM 12
p.setName('JACK');
console.log(p.name,p.age)// JACK 12

如果创建多个对象,代码重复
var p2 = {
name: 'TOM',
age: 13,
  setName: function(name) {
    this.name = name;
  }
}
 

方式三:工厂模式

套路:通过工厂函数动态创建对象并返回

适用场景: 需要创建多个对象

问题: 对象没有一个具体的类型都是Object类型

function createPerson (name,age) {// 返回一个对象的函数=》 工厂函数
  var obj = {
     name: name,
     age: age,
     setName: function(name) {
       this.name = name;
     }
    }
   return obj
}

 var p1 = createPerson('Tom',12)
var p1 = createPerson('Jack',13)

方式四:自定义构造函数模式

套路: 自定义构造函数,通过new创建对象

适用场景: 需要创建多个类型确定得对象

问题: 每个对象都有相同得数据,消费内存

// 定义类型
  function Person(name,age) {
    this.name = name;
     this.age = age;
      this.setName = function(name) {
        this.name = name;
    }
}
var p1 = new Person('TOM',12)
P1.setName('JACK')
console.log(p1.name,p1.age)

方式六:构造函数+原型的组合模式

*套路: 自定义构造函数,属性在函数中初始化,方法添加到原型上

*适用场景:需要创建多个类型确定的对象

function Person(name,age) {
   // 在构造函数中只初始化一般函数
    this.name = name;
     this.age = age;
  Person.prototype.setName = function(name) {
     this.name = name;
    }
}
  var p1 = new Person('tom',12)
var p1 = createPerson('jack',13)
  console.log(p1,p2)

原文链接:

37.尚硅谷_JS高级_对象创建模式_哔哩哔哩_bilibili

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/380182.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt 到底颠覆了什么 第一部分

ChatGPT一出来,一堆搞NLP的立马哭了。为什么?不该问为什么哭,而该问为什么还不哭。 有两个立马大哭的理由。 第一个理由很多人说了,范式改变。 虽然说没有哪个研究领域,甚至没有哪个领域敢说自己真的是天道酬勤绝对公平…

自己第一次在虚拟机完整部署ssm项目心得体会

过程使用资源和博文 琳哥发的linux课件文档,阳哥发的linux课件文档(私聊我要) https://www.likecs.com/show-205274015.html https://www.cnblogs.com/aluoluo/articles/15845183.html https://blog.csdn.net/osfipin/article/details/54405445 https://blog.csdn.net/drea…

【封装xib补充 Objective-C语言】

一、那么首先,咱们就从这个结果来分析 1.就不给大家一步一步分析了,直接分析我们这里怎么想的, 首先,我们看到这样的一个界面,我们想,这些应用数据是不是来源于一个plist文件吧, 所以说,我们首先要,第一步,要懒加载,把这个plist文件中的数据,加载起来, 那么,因…

超详细MySQL(免安装版)安装与配置

一、MySQL下载 首先打开MySQL官网,官网首页地址为 MySQL官网首页地址 进入官网后如下图所示,点击DOWNLOADS进入下载页面 下滑页面找到MySQL Community(GPL)Downloads>>并点击 接下来点击MySQL Community Server 若想要安…

C语言数组【详解】

数组1. 一维数组的创建和初始化1.1 数组的创建1.2 数组的初始化1.3 一维数组的使用1.4 一维数组在内存中的存储2. 二维数组的创建和初始化2.1 二维数组的创建2.2 二维数组的初始化2.3 二维数组的使用2.4 二维数组在内存中的存储3. 数组越界4. 数组作为函数参数4.1 冒泡排序函数…

java 学习3(数组)

java ——数组 ✍作者:电子科大不知名程序员 🌲专栏:java学习指导 各位读者如果觉得博主写的不错,请诸位多多支持;如果有错误的地方,欢迎在评论区指出 数组是一组相同类型元素按一定顺序排列的集合 数组相…

[MatLab]变量与数据结构

在开始工程之前,需要先指定工程目录,按住下图红框按钮进行选择。 Matlab分为编辑器和命令窗口,编辑器用来编写代码文件,而命令窗口可以实时交互。 在窗口中输入clc即可清除命令窗口;clear all可以清除工作区中所有变量…

【论文笔记】Long Tail Learning via Logit Adjustment

摘要 Our techniques revisit the classic idea of logit adjustment based on the label frequencies, either applied post-hoc to a trained model, or enforced in the loss during training. Such adjustment encorages a large relative margin between logits of rare …

项目管理系统的设计与实现

技术:Java、JSP等摘要:企业项目管理系统是为了使企业项目能够按照预定的成本、进度、质量顺利完成,而对人员、产品、过程和项目进行分析和管理的活动,系统主要包括项目基本信息操作、项目规划管理,合同管理&#xff0c…

一步一步教你如何使用 Visual Studio Code 编译一段 C# 代码

以下是一步一步教你如何使用 Visual Studio Code 编写使用 C# 语言输出当前日期和时间的代码: 1、下载并安装 .NET SDK。您可以从 Microsoft 官网下载并安装它。 2、打开 Visual Studio Code,并安装 C# 扩展。您可以在 Visual Studio Code 中通过扩展菜…

VMware NSX 4.1 发布 - 网络安全虚拟化平台

请访问原文链接:VMware NSX 4 - 网络安全虚拟化平台,查看最新版。原创作品,转载请保留出处。 作者主页:www.sysin.org VMware NSX 提供了一个敏捷式软件定义基础架构,用来构建云原生应用程序环境。NSX 专注于为具有异…

【SPSS】两配对样本T检验分析详细操作教程(附案例实战)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

【微服务】-认识微服务

目录 1.1 单体、分布式、集群 单体 分布式 集群 1.2 系统架构演变 1.2.1 单体应⽤架构 1.2.2 垂直应⽤架构 1.2.3 分布式架构 1.2.4 SOA架构 1.2.5 微服务架构 1.3 微服务架构介绍 微服务架构的常⻅问题 1.4 SpringCloud介绍 1.4.1 SpringBoot和SpringCloud有啥关…

【Flutter入门到进阶】Flutter基础篇---介绍与环境

1 Flutter介绍 Flutter是谷歌公司开发的一款开源、免费的UI框架,可以让我们快速的在Android和iOS上构建高质量 App。它最大的特点就是跨平台、以及高性能。 目前 Flutter 已经支持 iOS、Android、Web、Windows、macOS、Linux等。 Flutter基于谷歌的dart语言&#…

NLTK与StanfordNLP工具包结合使用

(一) 概述 1.NLTK NLTK是一款著名的python自然语言处理工具包,其内收集了NLP领域大量的公开数据集以及常用模型,涵盖了分词,词性标注,命名实体识别,句法分析,依存分析等各种NLP领域的子任务。 2.Stanfor…

【Linux】动静态库-概念制作

文章目录前置知识:库的命名C标准库动静态库安装C/C静态库完整的库需要的东西制作静态库制作使用一个小疑惑:制作动态库制作使用总结:前置知识: 一般库分为两种:动态库和静态库 静态库和动态库本质就是文件!也有inode 库的命名 库文件的命名一般为: libXXXXX.so 或…

基于部标JT808的车载视频监控需求与EasyCVR视频融合平台解决方案设计

一、方案背景 众所周知,在TSINGSEE青犀视频解决方案中,EasyCVR视频智能融合共享平台主要作为视频汇聚平台使用,不仅能兼容安防标准协议RTSP/Onvif、国标GB28181,互联网直播协议RTMP,私有协议海康SDK、大华SDK&#xf…

谷歌seo做的外链怎样更快被semrush识别

本文主要分享做谷歌seo外链如何能让semrush工具快速的记录并能查询到。 本文由光算创作,有可能会被剽窃和修改,我们佛系对待这种行为吧。 谷歌seo做的外链怎样更快被semrush识别? 答案是:多使用semrush搜索目标网站可加速爬虫抓…

SOLIDWORKS Premium 2023 SP1.0 三维设计绘图软件

SOLIDWORKS 中文完美正式版提供广泛工具来处理最复杂的问题,并提供深层技术完成关键细节工作。新功能可助您改善产品开发流程,以更快地将创新产品投入生产。Solidworks 是达索公司最新推出的三维CAD系统,它可让设计师大大缩短产品的设计时间,让产品得以快速、高效地投向市场…

2023年/2024届 暑期实习 【汇总+更新】

文章目录百度2024届暑期实习生招聘米哈游2023春季校园招聘正式启动(含暑期实习)拼多多2024届暑期实习生招聘百度2024届暑期实习生招聘 百度2023届校园招聘春季补录仍在持续进行中,本周日(3月5日)截止网申,…