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表单验证框架的方法
Sep 14 Javascript
通过javascript把图片转化为字符画
Oct 24 Javascript
弹出窗口并且此窗口带有半透明的遮罩层效果
Mar 13 Javascript
jQuery实现表单提交时判断的方法
Dec 13 Javascript
js带点自动图片轮播幻灯片特效代码分享
Sep 07 Javascript
深入解析JavaScript编程中的this关键字使用
Nov 09 Javascript
jQuery实现下拉加载功能实例代码
Apr 01 Javascript
require.js中的define函数详解
Jul 10 Javascript
在element-ui的el-tree组件中用render函数生成el-button的实例代码
Nov 05 Javascript
vue实现可视化可拖放的自定义表单的示例代码
Mar 20 Javascript
封装微信小程序http拦截器过程解析
Aug 13 Javascript
p5.js码绘“跳动的小正方形”的实现代码
Oct 22 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.NET的入门教程
2006/10/09 PHP
php使用正则表达式进行字符串搜索的方法
2015/03/23 PHP
教你在PHPStorm中配置Xdebug
2015/07/27 PHP
Yii开启片段缓存的方法
2016/03/28 PHP
PHP递归删除多维数组中的某个值
2017/04/17 PHP
php双层循环(九九乘法表)
2017/10/23 PHP
利用js获取服务器时间的两个简单方法
2010/01/08 Javascript
JavaScript判断用户是否对表单进行了修改的方法
2015/03/18 Javascript
JavaScript编写简单的计算器
2015/11/25 Javascript
Node.js重新刷新session过期时间的方法
2016/02/04 Javascript
基于jQuery的select下拉框选择触发事件实例分析
2016/11/18 Javascript
基于JavaScript实现轮播图原理及示例
2020/04/10 Javascript
详解angular2实现ng2-router 路由和嵌套路由
2017/03/24 Javascript
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
js实现rem自动匹配计算font-size的示例
2017/11/18 Javascript
利用hasOwnProperty给数组去重的面试题分享
2018/11/05 Javascript
js实现带箭头的进度流程
2020/03/26 Javascript
vue.js watch经常失效的场景与解决方案
2021/01/07 Vue.js
跟老齐学Python之深入变量和引用对象
2014/09/24 Python
对python操作kafka写入json数据的简单demo分享
2018/12/27 Python
pycharm通过ssh连接远程服务器教程
2020/02/12 Python
Python Django form 组件动态从数据库取choices数据实例
2020/05/19 Python
简述python&pytorch 随机种子的实现
2020/10/07 Python
html5新增的属性和废除的属性简要概述
2013/02/20 HTML / CSS
Spartoo芬兰:欧洲最大的网上鞋店
2016/08/28 全球购物
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
2016/03/23 面试题
UNIX特点都有哪些
2016/04/05 面试题
请假条怎么写
2014/04/10 职场文书
旅游专业毕业生自荐书
2014/06/30 职场文书
学校关爱留守儿童活动方案
2014/08/27 职场文书
大学军训决心书
2015/02/05 职场文书
志愿者个人总结
2015/03/03 职场文书
2016应届毕业生自荐信范文
2016/01/28 职场文书
如何开发一个渐进式Web应用程序PWA
2021/05/10 Javascript
基于Redis zSet实现滑动窗口对短信进行防刷限流的问题
2022/02/12 Redis
CSS实现渐变色边框(Gradient borders)的5种方法
2022/03/25 HTML / CSS