目录

一.新增的对象字面量语法

1.成员速写

2.方法速写

3.计算属性名

二.Object的新增API

1.Object.is

2.Object.assign

3.Object.getOwnPropertyNames的枚举顺序

4.Object.setPrototypeOf


一.新增的对象字面量语法

1.成员速写

如果对象字面量初始化时,成员的名称来自于一个变量,并且和变量名的名称相同,则可以进行简写

【例1-1】

之前的写法

function personMes(name, sex, age, address) {return {name : name,sex : sex,age : age,address: address,}
}
const person = personMes('jwh', 'female', 18, '陕西省');
console.log(person);

ES6写法

function personMes(name,sex,age,address) {return{name,sex,age,address}
}
const person = personMes('jwh', 'female', 18, '陕西省');
console.log(person);

2.方法速写

对象字面初始化时,方法可以省略冒号和function关键字

【例1-2】

之前的写法

const init = {name : 'jwh',age : 18,print: function () {console.log(this.name, this.age);}
}
init.print();

ES6写法

const init = {name : 'jwh',age : 18,print() {console.log(this.name, this.age);}
}
init.print();

3.计算属性名

有的时候,初始化对象时,某些属性名可能来自于某个表达式的值,在ES6中,可以使用中括号来表示该属性名是通过计算得到的。

【例1-3】

const prop1 = 'name';
const prop2 = 'age';
const prop3 = 'print';
const user = {[prop1] : 'jwh',[prop2] : 18,[prop3] () {console.log(this[prop1] ,this[prop2])}
}
user[prop3]();
console.log(user);

二.Object的新增API

1.Object.is

用于判断两个数据是否相等,基本上跟严格相等(===)是一致的,除了以下两点

  • NaN和NaN相等
  • +0和-0不相等

【例2-1】

console.log('NaN === NaN的结果', NaN === NaN);
console.log('Object.is(NaN, NaN)', Object.is(NaN, NaN));
console.log('+0 === -0的结果', +0 === -0);
console.log('Object.is(+0, -0)',Object.is(+0, -0));

【结果】

图2-1

2.Object.assign

用于混合对象,Object.assign(obj1, obj2,...),将所有对象按照顺序混合到第一个对象上,若obj1没有的属性则直接添加,若obj1有该属性,则进行覆盖。

【例2-2】

obj1 = {name: 'jwh',age: 18,sex: 'female'
}
obj2 = {grade: 1,number: 1901210214,name: 'ths'
}
obj3 = {address: 2313,grade: 2
}
Object.assign(obj1, obj2, obj3);
console.log('obj1:', obj1);
console.log('obj2:', obj2);
console.log('obj3:', obj3)

【结果】

图2-2

3.Object.getOwnPropertyNames的枚举顺序

Object.getOwnPropertyNames方法之前就存在,只不过官方没有明确要求对属性的顺序如何排序,具体如何排序,完全由浏览厂商决定。ES6规定了该方法返回的数组的排序方式如下

  • 先排数字,并按照升序排列
  • 再排其他,按照书写顺序排序

【例2-3】

obj1 = {2: 'grade',name: 'jwh',1: 'address',age: 18,sex: 'female',
}
console.log(Object.getOwnPropertyNames(obj1));

【结果】

图2-3

4.Object.setPrototypeOf

该函数用于设置某个对象的隐式原型,比如Object.setPrototypeOd(obj1, obj2),相当于obj1.__proto__ = obj2.__proto__

【例2-4】不设置的话,obj1的隐式原型是Object

obj1 = {name: 'jwh',age: 18,sex: 'female'
}
obj2 = {grade: 1,number: 1901210214
}
Object.setPrototypeOf(obj1, obj2)
console.log(obj1);

【结果】

图2-4

ES6对象(1):新增语法与API相关推荐

  1. ES6的常见新增语法

    目录 前言 一.立即执行函数 二.箭头函数 三.this指向 this指向的理解 普通函数的this指向 箭头函数的this指向 四.改变this指向 语法1:call()     apply() 语 ...

  2. ES6新增语法与内置对象扩展

    技术交流QQ群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder的程序人生 1.什么是ES6 ES的全称是ECMAScript,它是由ECMA国际标准化组织制定的一项 ...

  3. ES6/06/ES6简介,ES6新增语法,let声明变量,const声明常量,var,let和const总结,数组解构,对象解构,箭头函数,剩余参数

    ES6简介 ES全称:ECMAScript ; 由ECMA国际化组织制定的标准脚本语言的标准化规范: 为什么使用ES6? 每一次标准的诞生都意味着语言的完善,功能的加强,JavaScript语言本身也 ...

  4. ECMA2015(ES6)简单入门-9-对象-对象的扩展-对象的新增方法

    对象的创建 使用Object构造函数来创建一个对象 使用对象字面量创建一个对象 工厂模式创建对象 构造函数模式创建对象 原型模式创建对象 本身也有缺陷,就是实例共享了引用类型friends,从下面的代 ...

  5. ES6 对象的新功能与解构赋值介绍

    ES6 通过字面量语法扩展.新增方法.改进原型等多种方式加强对象的使用,并通过解构简化对象的数据提取过程. 一.字面量语法扩展 在 ES6 模式下使用字面量创建对象更加简洁,对于对象属性来说,属性初始 ...

  6. es6 对象中是否有键值_干货| ES6/ES7好玩实用的特性介绍

    本文介绍一些ES6/ES7好玩实用又简单的特性,或许对写代码的效率也有一定帮助噢. ES6/ES7的出现已经有一段时间了,里面的一些新特性你们是否了解呢?本骚年将结合自身的一些使用经历介绍一些简单实用 ...

  7. iOS11新增版本判断API

    iOS11新增版本判断API iOS11版本现在有了简单的API,OC也开始支持swfit的@available语法,不用再手写iOS版本判断了. if (@available(iOS 11.0, * ...

  8. 为什么说ES6的class是语法糖?

    0. 前言 我们带着问题去阅读本文: 为什么说ES6的class是语法糖? class是原型的语法糖吗? 那又是如何使用原型来实现class这一语法糖的呢? 1. 基于Prototype的OOP 先来 ...

  9. ES6入门:方括号语法

    ES6入门:方括号语法 1.方括号语法的用法 const prop = 'age'; const person = {}; //给person添加属性age //person.prop = 18; 错 ...

最新文章

  1. 常见蓝牙模块介绍和AT指令
  2. html如何引入swiper,vue-cli webpack 引入swiper的操作方法
  3. 23. Leetcode 86. 分隔链表 (链表-基础操作类-分隔链表)
  4. 爬虫Selenium报错“cannot find Chrome binary“解决方案
  5. Luogu P5652 基础博弈练习题 (博弈论、图论)
  6. 测试开发python面试_python测试开发面试之深浅拷贝
  7. 如何选择和计算滤波电容?--电容使用详述
  8. Class Imbalance Problem
  9. 首席技术执行官_如何在几分钟内找到任何首席执行官的电子邮件地址
  10. asp.net 3.5 知识点
  11. PyCharm平台下初学Django框架
  12. 双系统重装windows后修复UBUNTU的GRUB
  13. java关键字transient和volatile的基本含义和使用方法
  14. hp1008win7驱动问题
  15. visio premium 2010 产品密钥
  16. 数据分析之数据可视化
  17. 美国英语情景对话大全(zt)
  18. vue valley_12个无剧透的Stardew Valley秘诀和技巧,助您入门
  19. vue二维码生成与图片下载
  20. 【记录】gis空间分析poi点分布的影响因素操作过程

热门文章

  1. VC使用flash简易教程
  2. Ansible:Ansibl项目生产环境快速布局
  3. 什么是缓存?为什么要使用Redis?
  4. Netty学习笔记(二)Netty服务端流程启动分析
  5. MyBatis(二)MyBatis基本流程源码分析
  6. 音视频技术开发周刊 | 158
  7. 剑指offer之题解目录(全)
  8. MySQL之父与企鹅的故事
  9. Android使用Retrofit2.0和RxJava2.0处理网络请求
  10. go 分段锁ConcurrentMap,map+读写锁,sync.map的效率测试