JavaScript 对象创建的3种方法


Posted in Javascript onNovember 17, 2021

前言:

JavaScript中,对象是一组有属性名和属性值组成的无序集合,对象的创建可以通过对象字面量、new 关键字 和Object.create()函数来创建。

1、对象字面量

let obj = {}  // 空对象
let obj2 = {a:1, b:2}

let obj3 = {" hel": "wold"}  // 属性名如果有空格,可以用字符串字面量作为属性名

2、new 关键字创建对象

使用 new 关键字后面调用构造函数,创建一个新的对象

let o = new Object(); // 内置的构造函数

let m = new Math();

let a = new Array();

let d = new Date();

function Person(){  //自定义构造函数

}
let person = new Person()

3、使用 Object.create() 创建对象

let o = Object.create({x:1, y:2});
console.log(o.x+o.y) //3

新对象o 将继承 {x:1, y:2} ,属性x和y称为继承属性, 如果传入的参数是null,则这个对象不会继承任何对象。被继承的对象又称之为“原型”。

Object.create(null)

4、 使用扩展操作符:...

ES2018新增了扩展操作符...,将已有的对象属性复制到新的对象中

let foo  = {x:1, y:2}
let bar  = {z:3}

let zoo = {...foo, ...bar}

console.log(zoo) // {x:1, y:2, z:3}

需要注意的几点:

  • 扩展操作符只扩展对象的自有属性,继承属性不支持扩展
  • 如果扩展对象和被扩展的对象有相同名字的属性,属性的值由后面的对象决定

5、使用Object.assign()方法

assign 可以把一个对象的属性复制到另一个对象, assign 接收两个或多个参数,第一个参数为目标对象,第二个及后续参数为来源对象,函数将把来源对象的属性复制到目标对象,并返回目标对象。

let foo  = {x:1, y:2}
let bar  = {z:3}

let zoo = {}

let obj = Object.assign(zoo, foo, bar)

console.log(zoo)  // {x:1, y:2, z:3}

console.log(obj===zoo) // true

另外补充两个ES6中新增的对象特性

6、简写属性

如果想创建多个变量名和对应值组合成的对象,原来需要像传统对象字面量语法构建对象

let x=1, y =2;
let o = {x:x, y:y}

console.log(o) // {x:1, y:2}

ES6之后可直接简写属性,省去分号和属性名

let o2 = {x, y}

console.log(o2) // {x:1, y:2}

7、简写方法

在对象中定义方法时,ES6以前需要,定义方法时需要像定义普通属性一样,通过函数表达式定义方法

let point={
    x:1,
    y:2,

    area: function(){
        return this.x*this.y
    }
}

console.log(point.area()) //2

ES6之后可以省略冒号和function关键字,以一种简单的方式来定义对象的方法。

let point2={
    x:1,
    y:2,

    area(){
        return this.x*this.y
    }
}

console.log(point2.area()) //2

到此这篇关于JavaScript 对象创建的3种方法的文章就介绍到这了,更多相关JavaScript 对象创建方法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
使用EXT实现无刷新动态调用股票信息
Nov 01 Javascript
善用事件代理,警惕闭包的性能陷阱。
Jan 20 Javascript
JS获取页面窗口大小的代码解读
Dec 01 Javascript
jQuery页面图片伴随滚动条逐渐显示的小例子
Mar 21 Javascript
JavaScript实现控制打开文件另存为对话框的方法
Apr 17 Javascript
jQuery ajax时间差导致的变量赋值问题分析
Jan 22 Javascript
JavaScript判断表单为空及获取焦点的方法
Feb 12 Javascript
JavaScript实现显示函数调用堆栈的方法
Apr 21 Javascript
js操作DOM--添加、删除节点的简单实例
Jul 08 Javascript
基于Vue.js 2.0实现百度搜索框效果
Dec 28 Javascript
vue结合el-upload实现腾讯云视频上传功能
Jul 01 Javascript
微信小程序接入vant Weapp组件的详细步骤
Oct 28 Javascript
JavaScript 中for/of,for/in 的详细介绍
Nov 17 #Javascript
JavaScript高级程序设计之基本引用类型
Nov 17 #Javascript
JavaScript高级程序设计之变量与作用域
javascript对象3个属性特征
详细聊聊浏览器是如何看闭包的
Vue3中的Refs和Ref详情
Nov 11 #Vue.js
react 路由Link配置详解
Nov 11 #Javascript
You might like
编写PHP的安全策略
2006/10/09 PHP
php实现信用卡校验位算法THE LUHN MOD-10示例
2014/05/07 PHP
php中使用gd库实现远程图片下载实例
2015/05/12 PHP
谈谈php对接芝麻信用踩的坑
2016/12/01 PHP
使一个函数作为另外一个函数的参数来运行的javascript代码
2007/08/13 Javascript
JavaScript类型转换方法及需要注意的问题小结(挺全面)
2010/11/11 Javascript
关于Jquery操作Cookie取值错误的解决方法
2013/08/26 Javascript
JavaScript中的数组特性介绍
2014/12/30 Javascript
总结几道关于Node.js的面试问题
2017/01/11 Javascript
WebPack基础知识详解
2017/01/16 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(2)
2017/02/20 Javascript
Nodejs中使用captchapng模块生成图片验证码
2017/05/18 NodeJs
vue页面使用阿里oss上传功能的实例(二)
2017/08/09 Javascript
vue 使某个组件不被 keep-alive 缓存的方法
2018/09/21 Javascript
KnockoutJS数组比较算法实例详解
2019/11/25 Javascript
vue插槽slot的简单理解与用法实例分析
2020/03/14 Javascript
[35:26]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第三局
2016/02/26 DOTA
Python Deque 模块使用详解
2014/07/04 Python
Python编程中time模块的一些关键用法解析
2016/01/19 Python
python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
2018/09/13 Python
python实现海螺图片的方法示例
2019/05/12 Python
Python 3.6 -win64环境安装PIL模块的教程
2019/06/20 Python
下载官网python并安装的步骤详解
2019/10/12 Python
Python实现基于socket的udp传输与接收功能详解
2019/11/15 Python
基于spring boot 日志(logback)报错的解决方式
2020/02/20 Python
Python写捕鱼达人的游戏实现
2020/03/31 Python
Python3实现建造者模式的示例代码
2020/06/28 Python
两种CSS3伪类选择器详细介绍
2013/12/24 HTML / CSS
adidas官方旗舰店:德国运动用品制造商
2017/11/25 全球购物
新秀丽官方旗舰店:Samsonite拉杆箱、双肩包、皮具
2018/03/05 全球购物
Farah官方网站:男士服装及配件
2019/11/01 全球购物
大学生最常用的自我评价
2013/12/07 职场文书
烹饪自我鉴定
2014/03/01 职场文书
干部作风建设工作总结
2014/10/29 职场文书
离婚被告答辩状
2015/05/22 职场文书
小学生班干部竞选稿
2015/11/20 职场文书