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 相关文章推荐
window.onload 加载完毕的问题及解决方案(上)
Jul 09 Javascript
js 手机号码合法性验证代码集合
Sep 29 Javascript
js下拉框二级关联菜单效果代码具体实现
Aug 03 Javascript
js+div实现图片滚动效果代码
Feb 10 Javascript
JS实现静止元素自动移动示例
Apr 14 Javascript
JavaScript使用function定义对象并调用的方法
Mar 23 Javascript
简介JavaScript中Boolean.toSource()方法的使用
Jun 05 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
Sep 01 Javascript
使用webpack-dev-server处理跨域请求的方法
Apr 18 Javascript
Angular动画实现的2种方式以及添加购物车动画实例代码
Aug 09 Javascript
详解JS实现系统登录页的登录和验证
Apr 29 Javascript
fastadmin中调用js的方法
May 14 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中PDO的错误处理
2011/09/04 PHP
destoon实现首页显示供应、企业、资讯条数的方法
2014/07/15 PHP
laravel中命名路由的使用方法
2017/02/24 PHP
浅谈PHP中的面向对象OOP中的魔术方法
2017/06/12 PHP
php 与 nginx 的处理方式及nginx与php-fpm通信的两种方式
2018/09/28 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
基于jquery实现页面滚动时顶部导航显示隐藏
2020/04/20 Javascript
HTML5 JS压缩图片并获取图片BASE64编码上传
2020/11/16 Javascript
基于JavaScript实现右键菜单和拖拽功能
2016/11/28 Javascript
详解js数组的完全随机排列算法
2016/12/16 Javascript
JavaScript调试的多个必备小Tips
2017/01/15 Javascript
初探JavaScript 面向对象(推荐)
2017/09/03 Javascript
基于匀速运动的实例讲解(侧边栏,淡入淡出)
2017/10/17 Javascript
js动态获取时间的方法分析
2019/08/02 Javascript
python多重继承实例
2014/10/11 Python
Python最长公共子串算法实例
2015/03/07 Python
python中引用与复制用法实例分析
2015/06/04 Python
Python找出9个连续的空闲端口
2016/02/01 Python
Python进阶之递归函数的用法及其示例
2018/01/31 Python
Python使用Django实现博客系统完整版
2020/09/29 Python
python获取代理IP的实例分享
2018/05/07 Python
对python中的try、except、finally 执行顺序详解
2019/02/18 Python
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
2019/08/17 Python
PyQt5中向单元格添加控件的方法示例
2020/03/24 Python
美体小铺英国官网:The Body Shop英国
2017/01/24 全球购物
StubHub西班牙:购买和出售全球活动门票
2017/06/05 全球购物
Nike瑞典官方网站:Nike.com (SE)
2018/11/26 全球购物
什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
2014/07/21 面试题
材料加工硕士生求职信
2013/10/10 职场文书
竞选班长自荐书范文
2014/03/09 职场文书
党课知识竞赛主持词
2014/04/01 职场文书
2014年个人师德工作总结
2014/12/04 职场文书
交通事故调解协议书
2015/05/20 职场文书
2016党员入党决心书
2015/09/22 职场文书
golang操作redis的客户端包有多个比如redigo、go-redis
2022/04/14 Golang