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 相关文章推荐
JavaScript constructor和instanceof,JSOO中的一对欢喜冤家
May 25 Javascript
FileUpload 控件 禁止手动输入或粘贴的实现代码
Apr 07 Javascript
基于jquery的放大镜效果
May 30 Javascript
js格式化货币数据实现代码
Sep 04 Javascript
ExtJS[Desktop]实现图标换行示例代码
Nov 17 Javascript
jtable列中自定义button示例代码
Nov 21 Javascript
jquery和ajax的关系详细介绍
Nov 29 Javascript
详解小程序设置缓存并且不覆盖原有数据
Apr 15 Javascript
VScode格式化ESlint方法(最全最好用方法)
Sep 10 Javascript
Echarts实现单条折线可拖拽效果
Dec 19 Javascript
vue祖孙组件之间的数据传递案例
Dec 07 Vue.js
11个Javascript小技巧帮你提升代码质量(小结)
Dec 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获取表单数据与HTML嵌入PHP脚本的实现
2017/02/09 PHP
简单谈谈 php 文件锁
2017/02/19 PHP
js 判断脚本加载完毕的代码
2011/07/13 Javascript
js日历功能对象
2012/01/12 Javascript
JavaScript常用对象的方法和属性小结
2012/01/24 Javascript
JavaScript中Math对象方法使用概述
2014/01/02 Javascript
IE6中链接A的href为javascript协议时不在当前页面跳转
2014/06/05 Javascript
JavaScript将字符串转换成字符编码列表的方法
2015/03/19 Javascript
JavaScript中函数表达式和函数声明及函数声明与函数表达式的不同
2015/11/15 Javascript
利用Js+Css实现折纸动态导航效果实例源码
2017/01/25 Javascript
微信小程序调用PHP后台接口 解析纯html文本
2017/06/13 Javascript
如何通过非数字与字符的方式实现PHP WebShell详解
2017/07/02 Javascript
npm全局模块卸载及默认安装目录修改方法
2018/05/15 Javascript
layui-laydate时间日历控件使用方法详解
2018/11/15 Javascript
解决IOS端微信H5页面软键盘弹起后页面下方留白的问题
2019/06/05 Javascript
vue+express+jwt持久化登录的方法
2019/06/14 Javascript
vue中渲染对象中属性时显示未定义的解决
2020/07/31 Javascript
python实现随机密码字典生成器示例
2014/04/09 Python
详解Python之unittest单元测试代码
2018/01/24 Python
python plotly绘制直方图实例详解
2019/07/22 Python
详解python uiautomator2 watcher的使用方法
2019/09/09 Python
Python实现GIF图倒放
2020/07/16 Python
中国一家专注拼团的社交购物网站:拼多多
2018/06/13 全球购物
伦敦一卡通:The London Pass
2018/11/30 全球购物
Currentbody德国站:健康与美容技术专家
2020/04/05 全球购物
数据库专业英语
2012/11/30 面试题
幼儿园保教管理制度
2014/02/03 职场文书
师范学院毕业生求职信
2014/06/24 职场文书
社区两委对照检查材料
2014/08/23 职场文书
纪念九一八事变演讲稿:牢记九一八,屈辱怎能忘
2014/09/14 职场文书
感谢师恩主题班会
2015/08/17 职场文书
接收函
2019/04/22 职场文书
教你怎么用Python监控愉客行车程
2021/04/29 Python
简单聊聊Vue中的计算属性和属性侦听
2021/10/05 Vue.js
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL
使用CSS实现音波加载效果
2023/05/07 HTML / CSS