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 相关文章推荐
json简单介绍
Jun 10 Javascript
JQuery入门——事件切换之hover()方法应用介绍
Feb 05 Javascript
图片动画横条广告带上下滚动的JS代码
Oct 25 Javascript
浅谈js中的延迟执行和定时执行
May 31 Javascript
详解vuelidate 对于vueJs2.0的验证解决方案
Mar 09 Javascript
前端插件之Bootstrap Dual Listbox使用教程
Jul 23 Javascript
element-ui 远程搜索组件el-select在项目中组件化的实现代码
Dec 04 Javascript
js实现简单贪吃蛇游戏
May 15 Javascript
Jquery高级应用Deferred对象原理及使用实例
May 28 jQuery
JavaScript检测是否开启了控制台(F12调试工具)
Oct 02 Javascript
VUE前端从后台请求过来的数据进行转换数据结构操作
Nov 11 Javascript
Vue Element UI自定义描述列表组件
May 18 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+DBM的同学录程序(1)
2006/10/09 PHP
php Http_Template_IT类库进行模板替换
2009/03/19 PHP
关于php中的json_encode()和json_decode()函数的一些说明
2016/11/20 PHP
php抽象方法和抽象类实例分析
2016/12/07 PHP
js 得到文件后缀(通过正则实现)
2013/07/08 Javascript
jquery右下角弹出提示框示例代码
2013/10/08 Javascript
JavaScript实现删除,移动和复制文件的方法
2015/08/05 Javascript
jQuery Mobile页面返回不需要重新get
2016/04/26 Javascript
jQuery mobile在页面加载时添加加载中效果 document.ready 和window.onload执行顺序比较
2016/07/14 Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
2016/10/27 Javascript
JavaScript中绑定事件的三种方式及去除绑定
2016/11/05 Javascript
Nodejs进阶:express+session实现简易登录身份认证
2017/04/24 NodeJs
vue2.0 computed 计算list循环后累加值的实例
2018/03/07 Javascript
Vue2.0 实现单选互斥的方法
2018/04/13 Javascript
clipboard在vue中的使用的方法示例
2018/10/19 Javascript
JavaScript函数式编程(Functional Programming)声明式与命令式实例分析
2019/05/21 Javascript
JavaScript实现指定数量的并发限制的示例代码
2020/03/10 Javascript
python操作mysql数据库
2017/03/05 Python
Python迭代器与生成器用法实例分析
2018/07/09 Python
详解Python学习之安装pandas
2019/04/16 Python
如何实现Django Rest framework版本控制
2019/07/25 Python
python获取array中指定元素的示例
2019/11/26 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
2020/04/24 Python
python3爬虫中异步协程的用法
2020/07/10 Python
Django xadmin安装及使用详解
2020/10/26 Python
HTML5+lufylegend实现游戏中的卷轴
2016/02/29 HTML / CSS
比利时的在线灯具店:Lampen24.be
2019/07/01 全球购物
施华洛世奇巴西官网:SWAROVSKI巴西
2019/12/03 全球购物
J2EE是技术还是平台还是框架
2016/08/14 面试题
工程概预算专业毕业生求职信
2013/10/04 职场文书
毕业生怎样写好自荐信
2013/11/11 职场文书
关于逃课的检讨书
2014/01/23 职场文书
关于旅游的活动方案
2014/08/15 职场文书
2014年民主评议党员个人总结
2014/09/24 职场文书
2014年房产经纪人工作总结
2014/12/08 职场文书
团结友爱主题班会
2015/08/13 职场文书