ECMAScript 2015
- 概述:
1.解决原由语法上的一些不足和问题
2.对原由语法进行增强
3.增加了全新的对象、方法、功能
3.全新的数据类型和数据结构 - const、let 没有变量提升;const 是只读的不能再重新赋值
- 模板字符串的标签:就是一个特殊的函数,可以用来实现模板引擎,模板字符串中可以识别书写的空格
- 对象字面量:方括号里面的执行结果作为对象属性名
- Object.assign可传入任意参数,第一个为目标对象,返回值就是目标对象,三等号为true
- proxy 可以通过set get 方法监听对象属性赋值和读取> 与 definedProperty 对比:definedProperty只能监听读写,但是proxy可以监听多种操作> proxy还可以监视数组
- Proxy 和 defineProperty的区别
- defineProperty:只能监视属性的读写
- Proxy :
1.能监视到更多的对象操作,例如:delete操作、对象的方法的调用等。
2.更好的支持数组对象的监视
3.proxy是以非侵入的方式监管了对象的读写
- reflect:reflect内部封装了一系列对对象的底层操作;统⼀的对象操作 API
- map和对象类似,对象的键值只能是字符串和Symbol,map的键值可以是任意类型
Symbol可以用来模拟对象的私有成员。为对象添加一个独一无二的属性,因为每次新建Symbol都不一样。Symbol.for(‘’)只要传入的字符串相等,生成的Symbol对象就一样
- 示例
const personProxy = new Proxy(person, {
get (target, property) {
console.log(target, property)
return target[property]
}
})
console.log(personProxy.name)
Symbol.for(‘1’) === Symbol.for(1) // true
const obj = {
[Symbol.toStringTag]: ‘XObject’,
[Symbol]: ‘Symbol value’
}
obj.toString() // [object XObject]
// 这样才能获取到Symbol类型的属性,Object.keys只能获取字符串类型的属性名
Object.getOwnPropertySymbols(obj)
ECMAScript 2016
- 示例
新增数组includes方法,可以判断是否有NaN,indexOf却不行
新增指数运算符 **
Object.values返回对象中所有值
- Object.entries数组形式返回对象所有键值对。可以直接for of循环;可以将一个对象转换成map类型
- Object.getOwnPropertyDescriptor用Object.assign复制的时候可以获取完整描述,配合get set方法使用
