js几种对象创建方式

news/2024/5/7 10:17:03/文章来源:https://blog.csdn.net/m0_59157023/article/details/129283584

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

方式一:

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.luyixian.cn/news_show_75852.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

发现新大陆——原来软件开发根本不需要会编码(看我10分钟应用上线)

目录 一、前言 二、官网基础功能及搭建 三、体验过程 01、连接数据源 02、设计表单 03、流程设计 04、图表呈现 05、组织架构设置 五、效率评价 六、小结 一、前言 众所周知,每家公司在发展过程中都需要构建大量的内部系统, 如运营使用的用户…

cnpm adduser 报错 409 Conflict

今天遇到一个问题,cnpm adduser 一直失败,返回 409 Conflict。 我们先来看下报错信息 409 Conflict - PUT http://registry.cnpm.xxxx.com.cn/-/user/org.couchdb.user:mingyu6 - conflict第一步 分析 http 错误码 409 Conflict:请求与服务…

数据结构初阶 -- 顺序表

数据结构初阶 链表的讲解 目录 一. 线性表 1.1 定义 1.2 特点 二. 顺序表 2.1 定义 2.2 代码 2.3 功能需求 2.4 静态顺序表的特点以及缺点 2.5 动态的顺序表 2.6 动态顺序表接口的实现 三. 代码 头文件 主文件 一. 线性表 1.1 定义 线性表(linear li…

代码随想录算法训练营第九届期第十四天 | 二叉树理论基础 、递归遍历 、迭代遍历 、统一迭代

打卡第十四天,今天学习二叉树。 今日任务 理论基础递归遍历迭代遍历统一迭代 理论基础 二叉树是一种基础数据结构 二叉树的种类 满二叉树:只有度为0和为2的结点,而且度为0 的结点都在最后一层。完全二叉树:结点按顺序从上到下&…

电脑没有回收站找回删除文件的2种方法

最近后台收到了这样的咨询:”在网吧上网,删除东西的时候不小心把我的文件给删除了,但是桌面上没有回收站,怎么才能找回我的文件?“——针对“电脑没有回收站删除的东西怎么恢复”这种疑问?不妨看看下面数据…

【计算机组成原理 - 第一章】计算机系统概论(完结)

本章参考王道考研相关课程: 【2021版】1.2.1_计算机硬件的基本组成_哔哩哔哩_bilibili 【2021版】1.2.2_认识各个硬件部件_哔哩哔哩_bilibili 【2021版】1.2.3_计算机系统的层次结构_哔哩哔哩_bilibili 【2021版】1.3_计算机的性能指标_哔哩哔哩_bilibili 目录 一、…

【记录问题】RuntimeError:working outside of application context. Flask使用SQLAlchemy数据库

前提:Flask使用SQLAlchemy数据库 本质:依赖包版本不匹配 问题1:报错RuntimeError:working outside of application context. 运行程序报错,如下错误: 原因:flask-sqlalchemy 版本过高导致&am…

手牵手教Docker部署Springboot+vue ,全过程十分详细,轻松完成项目部署(简单,高效,通用)

手把手教Docker部署Springbootvue ,详细全过程,轻松完成项目部署(简单,高效) 上线前准备 腾讯云的服务器,服务器安装好docker 和docker-compose 最好事先了解技术 nginxdocker-compose 整体编排 后端部…

CCNP350-401学习笔记(易错题合集)

CCNP350-401学习笔记(1-50题)_殊彦_sy的博客-CSDN博客CCNP350-401学习笔记(2023.2.17)https://blog.csdn.net/shuyan1115/article/details/129088574?spm1001.2014.3001.5502CCNP350-401学习笔记(51-100题&#xff09…

SAP 详解ST02

问:在st02中看到,Program和Export/Import的Swap出现红的了,这个是什么原因啊,是不是对系统的性能有影响啊,是否应该调整一些参数啊。要怎么调整呢? 复1:双击红色的部分就可以看到相应的参数修改…

Linux字符设备驱动模型之设备号

从上文中可知,在Linux用户空间中,如若需要操作硬件设备,均通过/dev目录下的设备文件节点进行操作,基本上每一种设备都会存在一个或者多个的设备节点。 并且在Linux内核中,其表示字符设备的结构成员也提供了相应的设备号…

在数字优先的世界中打击知识产权盗窃

在当今数据驱动的世界中,全球许多组织所面临的期望和需求正在达到前所未有的水平。 为了迎接挑战,数据驱动的方法是必要的,需要有效的数字化转型来提高运营效率、简化流程并从遗留技术中获得更多收益。 但是,虽然数字优先方法可…

css3的重点内容

css3的重点内容 浮动 父级边框塌陷问题 浮动的清除 clear:left; //清除左侧浮动 clear:right; //清除右侧浮动 clear:both; //清除两侧浮动解决方案 增加父级元素的高度增加一个空的div,之后清除浮动通过overflow来进行相关元素的修剪给父类添加相应的伪类元素…

植物大战 二叉搜索树——C++

这里是目录标题二叉排序树的概念模拟二叉搜索树定义节点类insert非递归Finderase(重点)析构函数拷贝构造(深拷贝)赋值构造递归FindRInsertR二叉搜索树的应用k模型KV模型二叉排序树的概念 单纯的二叉树存储数据没有太大的作用。 搜索二叉树作用很大。 搜索二叉树的一般都是用…

JavaEE进阶第六课:SpringBoot配置文件

上篇文章介绍了SpringBoot的创建和使用,这篇文章我们将会介绍SpringBoot配置文件 目录1.配置文件的作用2.配置文件的格式2.1 .properties语法2.1.1.properties的缺点2.2 .yml语法2.2.1优点分析2.2.2配置与读取对象2.2.3配置与读取集合2.2.4补充说明3.设置不同环境的…

时间API在更新,传奇已经谢幕,但技术永远不死

(Bill Joy(左一),Vinod Khosla(左二),Andy Bechtolsheim(右二),Scott McNealy(右一) ) CSDN 博文征集活动(和日期相关的代码和bug):点击这里 各位 “big guys”,这篇博文…

Java | IO 模式之 JavaBIO 应用

文章目录IO模型Java BIOJava NIOJava AIO(NIO.2)BIO、NIO、AIO的使用场景BIO1 BIO 基本介绍2 BIO 的工作机制3 BIO 传统通信实现3.1 业务需求3.2 实现思路3.3 代码实现4 BIO 模式下的多发和多收消息4.1 业务需求4.2 实现思路4.3 代码实现5 BIO 模式下接收…

单目标应用:蜣螂优化算法DBO优化RBF神经网络实现数据预测(提供MATLAB代码)

一、RBF神经网络 1988年,Broomhead和Lowc根据生物神经元具有局部响应这一特点,将RBF引入神经网络设计中,产生了RBF(Radical Basis Function)。1989年,Jackson论证了RBF神经网络对非线性连续函数的一致逼近性能。 RBF的基本思想是…

Mybatis二级缓存

目录 二级缓存的定义 二级缓存扩展性需求 二级缓存的结构 SynchronizedCache线程同步缓存区 LoggingCache统计命中率以及打印日志 ScheduledCache过期清理缓存区 LruCache(最近最少使用)防溢出缓存区 FifoCache(先进先出)防溢出缓存区 二级缓存的使用(命中条件) 二级…

使用netlify实现自动化部署前端项目(无服务器版本)

介绍 本文以 github仓库进行介绍关联netlify的无服务前端自动化部署。用途:个人网站设计、小游戏等当然这只是让你入门~具体细节等待你自己去探索 实现 打开官方网站 如果没有注册过的账户,你需要使用 github 去进行登录。注册完成后会自动给你提示填…