识别整数
console.log(Number.isInteger(25))//trueconsole.log(Number.isInteger(25.0))//trueconsole.log(Number.isInteger(25.1))//false
安全整数
IEEE 754只能准确的表示-2的53次方到2的53次方的整数
let inside = Number.MAX_SAFE_INTEGER, outside = Number.MAX_SAFE_INTEGER + 1 //Number.MIN_SAFE_INTEGER表示整数范围的下限console.log(Number.isInteger(inside))//trueconsole.log(Number.isSafeInteger(inside))//trueconsole.log(Number.isInteger(outside))//trueconsole.log(Number.isSafeInteger(outside))//false
Unicode标识符
可以将Unicode转义序列用作标识符
let \u0061 = 'abc'console.log(\u0061)//abcconsole.log(a)//abc
可以使用Unicode码位转义序列来作为标识符
let \u{61} = 'abc'console.log(\u{61})//abcconsole.log(a)//abc
正式化__proto__属性
- 只能在对象字面量中指定一次__proto__,如果指定两个__prpto__属性则会抛出错误,这是唯一具有该限制的对象字面量改改
- 可计算形式的["__proto__"]的行为类似于普通属性,不会设置或返回当前对象的原型。与对象字面量属性相关的所有规则均适用于此形式,应用不可计算的形式则会抛出异常使用__proto__和使用Object.getPrototypeOf或Object.setPrototypeOf方法的区别在于__proto__可以直接设置对象字面量的原型
let person = { getGreeting() { return 'hello' }}let dog = { getGreeting() { return 'woof' }}let friend = { __proto__: person}console.log(friend.getGreeting())//helloconsole.log(Object.getPrototypeOf(friend) === person)//trueconsole.log(friend.__proto__ === person)//truefriend.__proto__ = dogconsole.log(friend.getGreeting())//woofconsole.log(Object.getPrototypeOf(friend) === dog)//trueconsole.log(friend.__proto__ === dog)//true
没有通过调用Object.create方法来创建friend对象,而是创建一个标准对象字面量,并将一个值赋给__proto__属性,换句话说,当使用Object.create方法创建对象时,必须为所有其它对象属性指定完整的属性描述符