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 字符串操作函数
Jul 25 Javascript
JQery 渐变图片导航效果代码 漂亮
Jan 01 Javascript
整理JavaScript创建对象的八种方法
Nov 03 Javascript
详解微信小程序开发之下拉刷新 上拉加载
Nov 24 Javascript
浅谈vue项目如何打包扔向服务器
May 08 Javascript
使用Vuex解决Vue中的身份验证问题
Sep 28 Javascript
React 源码中的依赖注入方法
Nov 07 Javascript
详解vue 自定义marquee无缝滚动组件
Apr 09 Javascript
JS设置自定义快捷键并实现图片上下左右移动
Oct 17 Javascript
javscript 数组扁平化的实现
Feb 03 Javascript
vue+elementui通用弹窗的实现(新增+编辑)
Jan 07 Vue.js
JavaScript 数组去重详解
Sep 15 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 Hash函数,增强密码安全
2011/02/25 PHP
PHP daddslashes 使用方法介绍
2012/10/26 PHP
php 下载保存文件保存到本地的两种实现方法
2013/08/12 PHP
PHP命名空间(Namespace)简明教程
2014/06/11 PHP
PHP 正则表达式常用函数
2014/08/17 PHP
PHP中exec函数和shell_exec函数的区别
2014/08/20 PHP
yii数据库的查询方法
2015/12/28 PHP
对laravel的session获取与存取方法详解
2019/10/08 PHP
用nodejs实现PHP的print_r函数代码
2014/03/14 NodeJs
javascript结合canvas实现图片旋转效果
2015/05/03 Javascript
基于JavaScript实现移动端TAB触屏切换效果
2015/10/20 Javascript
Vue计算属性的学习笔记
2017/03/22 Javascript
页面间固定参数,通过cookie传值的实现方法
2017/05/31 Javascript
微信小程序 Buffer缓冲区的详解
2017/07/06 Javascript
javascript利用键盘控制小方块的移动
2020/04/20 Javascript
js+canvas实现转盘效果(两个版本)
2020/09/13 Javascript
[01:10]DOTA2英雄背景故事第四期之混沌法则混沌骑士
2020/07/16 DOTA
回调函数的意义以及python实现实例
2017/06/20 Python
Python解析命令行读取参数--argparse模块使用方法
2018/01/23 Python
python时间日期函数与利用pandas进行时间序列处理详解
2018/03/13 Python
python读取文本中数据并转化为DataFrame的实例
2018/04/10 Python
使用Django启动命令行及执行脚本的方法
2018/05/29 Python
python验证码识别教程之滑动验证码
2018/06/04 Python
Python实现PyPDF2处理PDF文件的方法示例
2019/09/25 Python
详解Django admin高级用法
2019/11/06 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
2020/06/03 Python
python开发一个解析protobuf文件的简单编译器
2020/11/17 Python
Lookfantastic澳大利亚官网:英国知名美妆购物网站
2021/01/07 全球购物
北京振戎融通Java面试题
2015/09/03 面试题
雪山饭庄的创业计划书范文
2014/01/18 职场文书
黄河象教学反思
2014/02/10 职场文书
初中同学聚会感言
2014/02/11 职场文书
2014年科技工作总结
2014/11/26 职场文书
保安2014年终工作总结
2014/12/06 职场文书
社区五一劳动节活动总结
2015/02/09 职场文书
React实现动效弹窗组件
2021/06/21 Javascript