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 相关文章推荐
匹配任意字符的正则表达式写法
Apr 29 Javascript
jquery.hotkeys监听键盘按下事件keydown插件
May 11 Javascript
JS代码实现table数据分页效果
May 26 Javascript
JavaScript实现垂直滚动条效果
Jan 18 Javascript
Vue监听数据对象变化源码
Mar 09 Javascript
如何给ss bash 写一个 WEB 端查看流量的页面
Mar 23 Javascript
jQuery使用unlock.js插件实现滑动解锁
Apr 04 jQuery
使用MUI框架模拟手机端的下拉刷新和上拉加载功能
Sep 04 Javascript
H5实现仿flash效果的实现代码
Sep 29 Javascript
从零开始搭建webpack+react开发环境的详细步骤
May 18 Javascript
jQuery 筛选器简单操作示例
Oct 02 jQuery
Vue实现图书管理小案例
Dec 03 Vue.js
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伪造referer突破网盘禁止外连的代码
2008/06/15 PHP
laravel 5.1下php artisan migrate的使用注意事项总结
2017/06/07 PHP
PHP chunk_split()函数讲解
2019/02/12 PHP
PHP并发场景的三种解决方案代码实例
2021/02/27 PHP
select组合框option的捕捉实例代码
2008/09/30 Javascript
javascript中关于break,continue的特殊用法与介绍
2012/05/24 Javascript
jquery ui dialog替代confirm实例分析
2016/01/25 Javascript
AngularJS中的过滤器filter用法完全解析
2016/04/22 Javascript
AngularJS过滤器详解及示例代码
2016/08/16 Javascript
BootStrap的table表头固定tbody滚动的实例代码
2016/08/24 Javascript
js学习笔记之事件处理模型
2016/10/31 Javascript
jQuery使用正则表达式替换dom元素标签用法示例
2017/01/16 Javascript
js实现滑动到页面底部自动加载更多功能
2017/02/15 Javascript
jQuery插件echarts实现的循环生成图效果示例【附demo源码下载】
2017/03/04 Javascript
JavaScript输入框字数实时统计更新
2017/06/17 Javascript
JS FormData上传文件的设置方法
2017/07/05 Javascript
vue计算属性和监听器实例解析
2018/05/10 Javascript
vuejs router history 配置到iis的方法
2018/09/20 Javascript
用jQuery将JavaScript对象转换为querystring查询字符串的方法
2018/11/12 jQuery
微信小程序实现的绘制table表格功能示例
2019/04/26 Javascript
uni-app微信小程序登录授权的实现
2020/05/22 Javascript
Vue在H5 项目中使用融云进行实时个人单聊通讯
2020/12/14 Vue.js
[04:44]DOTA2 2017全国高校联赛视频回顾
2017/08/21 DOTA
Python单体模式的几种常见实现方法详解
2017/07/28 Python
python实现二维插值的三维显示
2018/12/17 Python
Python 用matplotlib画以时间日期为x轴的图像
2019/08/06 Python
softmax及python实现过程解析
2019/09/30 Python
Python中猜拳游戏与猜筛子游戏的实现方法
2020/09/04 Python
python中PyQuery库用法分享
2021/01/15 Python
Python实现给PDF添加水印的方法
2021/01/25 Python
英国知名小木屋定制网站:Tiger Sheds
2020/03/06 全球购物
大学生毕业求职的自我评价
2013/09/29 职场文书
初中女生自我鉴定
2013/12/19 职场文书
爱祖国演讲稿
2014/05/04 职场文书
详解OpenCV获取高动态范围(HDR)成像
2022/04/29 Python
html解决浏览器记住密码输入框的问题
2023/05/07 HTML / CSS