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 相关文章推荐
jQuery实现密保互斥问题解决方案
Aug 16 Javascript
浏览器页面区域大小的js获取方法
Sep 21 Javascript
javascript数组操作方法小结和3个属性详细介绍
Jul 05 Javascript
jQuery使用经验小技巧(推荐)
May 31 Javascript
Node.js 数据加密传输浅析
Nov 16 Javascript
JavaScript省市级联下拉菜单实例
Feb 14 Javascript
Bootstrap 网格系统布局详解
Mar 19 Javascript
javascript获取指定区间范围随机数的方法
Sep 08 Javascript
使用Angular CLI生成路由的方法
Mar 24 Javascript
jQuery实现点击图标div循环放大缩小功能
Sep 30 jQuery
微信小程序上传多图到服务器并获取返回的路径
May 05 Javascript
通过实例解析JavaScript for in及for of区别
Jun 15 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
ajax php传递和接收变量实现思路及代码
2012/12/19 PHP
PHP解析html类库simple_html_dom的转码bug
2014/05/22 PHP
php银联网页支付实现方法
2015/03/04 PHP
PHP中异常处理的一些方法整理
2015/07/03 PHP
php表单提交实例讲解
2015/11/12 PHP
php while循环控制的简单实例
2016/05/30 PHP
php+jQuery递归调用POST循环请求示例
2016/10/14 PHP
php基于协程实现异步的方法分析
2019/07/17 PHP
Javascript实现仿WebQQ界面的“浮云”兼容 IE7以上版本及FF
2011/04/27 Javascript
JS获取鼠标坐标的实例方法
2013/07/18 Javascript
跟我学Node.js(四)---Node.js的模块载入方式与机制
2014/06/04 Javascript
响应式表格之固定表头的简单实现
2016/08/26 Javascript
Ajax使用原生态JS验证用户名是否存在
2020/05/26 Javascript
jQuery html表格排序插件tablesorter使用方法详解
2017/02/10 Javascript
JS常见算法详解
2017/02/28 Javascript
Three.js如何用轨迹球插件(trackball)增加对模型的交互功能详解
2017/09/25 Javascript
禁止弹窗中蒙层底部页面跟随滚动的几种方法
2017/12/07 Javascript
利用adb shell和node.js实现抖音自动抢红包功能(推荐)
2018/02/22 Javascript
对layui中表单元素的使用详解
2018/08/15 Javascript
微信小程序实现即时通信聊天功能的实例代码
2018/08/17 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
2020/09/21 Javascript
Python 时间处理datetime实例
2008/09/06 Python
python下实现二叉堆以及堆排序的示例
2017/09/29 Python
详解用python实现简单的遗传算法
2018/01/02 Python
python中将\\uxxxx转换为Unicode字符串的方法
2018/09/06 Python
Python openpyxl 插入折线图实例
2020/04/17 Python
Python基于爬虫实现全网搜索并下载音乐
2021/02/14 Python
Notino瑞典:购买香水和美容产品
2019/07/26 全球购物
在职人员函授期间自我评价分享
2013/11/08 职场文书
交通法规咨询中心工作职责
2013/11/27 职场文书
市场部规章制度
2014/01/24 职场文书
技术经济专业求职信
2014/09/03 职场文书
背起爸爸上学观后感
2015/06/08 职场文书
JS的深浅复制详细
2021/10/16 Javascript
Fluentd搭建日志收集服务
2022/09/23 Servers