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 相关文章推荐
js日期相关函数总结分享
Oct 15 Javascript
js文本框输入内容智能提示效果
Dec 02 Javascript
jquery 动态增加,减少input表单的简单方法(必看)
Oct 12 Javascript
jQuery实现扑克正反面翻牌效果
Mar 10 Javascript
underscore之Collections_动力节点Java学院整理
Jul 10 Javascript
Mongoose中document与object的区别示例详解
Sep 18 Javascript
轻松理解vue的双向数据绑定问题
Oct 30 Javascript
Node.js readline模块与util模块的使用
Mar 01 Javascript
vue 指定组件缓存实例详解
Apr 01 Javascript
bootstrap中日历范围选择插件daterangepicker的使用详解
Apr 17 Javascript
解决layer弹层遮罩挡住窗体的问题
Aug 17 Javascript
解决ie11 SCRIPT5011:不能执行已释放Script的代码问题
May 05 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 之 没有mysql支持时的替代方案
2006/10/09 PHP
php设计模式 Decorator(装饰模式)
2011/06/26 PHP
php 操作符与控制结构
2012/03/07 PHP
PHP5下$_SERVER变量不再受magic_quotes_gpc保护的弥补方法
2012/10/31 PHP
PHP sleep()函数, usleep()函数
2016/08/25 PHP
laravel5.6实现数值转换
2019/10/23 PHP
重载toString实现JS HashMap分析
2011/03/13 Javascript
jquery 选择器引擎sizzle浅析
2013/02/06 Javascript
复选框全选与全不选操作实现思路
2013/08/18 Javascript
JS实现根据出生年月计算年龄
2014/01/10 Javascript
jQuery修改CSS伪元素属性的方法
2014/07/30 Javascript
jQuery中prop()方法用法实例
2015/01/05 Javascript
JS实现很酷的水波文字特效实例
2015/02/26 Javascript
两款JS脚本判断手机浏览器类型跳转WAP手机网站
2015/10/16 Javascript
跟我学习javascript的闭包
2015/11/16 Javascript
JavaScript快速切换繁体中文和简体中文的方法及网站支持简繁体切换的绝招
2016/03/07 Javascript
使用PHP+JavaScript将HTML页面转换为图片的实例分享
2016/04/18 Javascript
node-http-proxy修改响应结果实例代码
2016/06/06 Javascript
一个简单不报错的summernote 图片上传案例
2016/07/11 Javascript
JQuery validate 验证一个单独的表单元素实例
2017/02/17 Javascript
微信小程序实现上传图片功能
2018/05/28 Javascript
手把手教你写一个微信小程序(推荐)
2018/10/17 Javascript
JS实现简单tab选项卡切换
2019/10/25 Javascript
原生JavaScript创建不可变对象的方法简单示例
2020/05/07 Javascript
利用一个简单的例子窥探CPython内核的运行机制
2015/03/30 Python
对python pandas读取剪贴板内容的方法详解
2019/01/24 Python
Python开发网站目录扫描器的实现
2019/02/21 Python
pycharm使用技巧之自动调整代码格式总结
2020/11/04 Python
html5 input元素新特性_动力节点Java学院整理
2017/07/06 HTML / CSS
美国时尚配饰品牌:Dooney & Bourke
2017/11/14 全球购物
什么是.net
2015/08/03 面试题
兼职业务员岗位职责
2014/01/01 职场文书
部队反四风对照检查材料
2014/09/26 职场文书
幼师个人总结范文
2015/02/28 职场文书
Python数据分析之pandas读取数据
2021/06/02 Python
nginx刷新页面出现404解决方案(亲测有效)
2022/03/18 Servers