摘要:
内置的 Symbol 值 除了定义自己使用的 Symbol 值以外,ES6 还提供了 11 个内置的 Symbol 值,指向语言内部使用的方法。 Symbol.hasInstance 对象的Symbol.hasInstance属性,指向一个内部方法。当其他对象使用instanceof运算符,判断是否 阅读全文
摘要:
Null 传导运算符 编程实务中,如果读取对象内部的某个属性,往往需要判断一下该对象是否存在。比如,要读取message.body.user.firstName,安全的写法是写成下面这样。 这样的层层判断非常麻烦,因此现在有一个提案,引入了“Null 传导运算符”(null propagation 阅读全文
摘要:
扩展运算符 扩展运算符(...)用于取出参数对象的所有可遍历属性,拷贝到当前对象之中。 这等同于使用Object.assign方法。 上面的例子只是拷贝了对象实例的属性,如果想完整克隆一个对象,还拷贝对象原型的属性,可以采用下面的写法。 上面代码中,写法一的__proto__属性在非浏览器的环境不一 阅读全文
摘要:
super 关键字 我们知道,this关键字总是指向函数所在的当前对象,ES6 又新增了另一个类似的关键字super,指向当前对象的原型对象。 上面代码中,对象obj的find方法之中,通过super.foo引用了原型对象proto的foo属性。 注意,super关键字表示原型对象时,只能用在对象的 阅读全文
摘要:
Object.getOwnPropertyDescriptors() 前面说过,Object.getOwnPropertyDescriptor方法会返回某个对象属性的描述对象(descriptor)。ES2017 引入了Object.getOwnPropertyDescriptors方法,返回指定对 阅读全文
摘要:
对象的每个属性都有一个描述对象(Descriptor),用来控制该属性的行为。Object.getOwnPropertyDescriptor方法可以获取该属性的描述对象。 描述对象的enumerable属性,称为”可枚举性“,如果该属性为false,就表示某些操作会忽略当前属性。 目前,有四个操作会 阅读全文
摘要:
Object.assign方法有很多用处。 (1)为对象添加属性 上面方法通过Object.assign方法,将x属性和y属性添加到Point类的对象实例。 (2)为对象添加方法 上面代码使用了对象属性的简洁表示法,直接将两个函数放在大括号中,再使用assign方法添加到SomeClass.prot 阅读全文
摘要:
Object.is() ES5 比较两个值是否相等,只有两个运算符:相等运算符(==)和严格相等运算符( )。它们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0等于-0。JavaScript 缺乏一种运算,在所有环境中,只要两个值是一样的,它们就应该相等。 ES6 提出“Same 阅读全文
摘要:
有两种特殊情况:bind方法创造的函数,name属性返回bound加上原函数的名字;Function构造函数创造的函数,name属性返回anonymous。 阅读全文