附录A:ES6中较小的改动
第1节 使用整数
JavaScript 使用 IEEE 754 编码系统来表示整数和浮点数,多年来这给开发者造成了不少混乱。ES6力图通过降低整数的识别和使用的难度来解决这些问题。
1. 由于浮点数和整数的存储方式不同,Number.isInteger() 方法利用了这种存储的差异来确定该值是否为整数。
2. 只给数字添加小数点不会让整数变为浮点数。
3. IEEE 754 只能准确地表示 -2^53 - 2^53之间的整数,在这个“安全”范围之外,则通过重用二进制来表示多个数值。
第2节 新的Math方法
1. ES6引入定型数组来增强游戏和图形体验,这个让JavaScript引擎可以进行更有效的数学计算。
2. ES6为 Math 对象添加了几种方法,以提高通常的数学计算的速度,同时可以提高密集计算应用程序(如:图形程序)的总体进度。
3. 具体添加的方法可以参考P.333。如果你的应用程序需要进行常见的运算,务必在动手之前,检查Math对象的新方法(是否已经有你的计算需要的方法了)。
第3节 Unicode标识符
在ES5、ES6中,可以将Unicode转义序列用作标识符。例如:
1 //在ES 5和6 中均合法 2 var \u0061 = "abc"; 3 4 console.log(\u0061) // "abc" 5 6 //等价于: 7 console.log(a); // "abc"
还可以用Unicode码位转义序列来作为标识符。例如,
1 //在ES 5和6 中均合法 2 var \u{61} = "abc"; 3 4 console.log(\u{61}); // "abc" 5 6 //等价于 7 console.log(a); // "abc"
第4节 正式化 __proto__ 属性
1. __proto__是 Object.getPropertyOf() 和 Object.setPropertyOf() 方法的早期实现。
2.ES6正式添加了 __proto__ 属性,但在正式标准:ECMA-262附录B中附带了一段警告:除非在Web浏览器中或者需要像Web浏览器一样执行遗留的ES代码,否则不鼓励ES实现这些功能。
3. 使用 __proto__ 和使用 Object.getPropertyOf() 方法或者 Object.setPropertyOf() 方法的区别在在于:__proto__ 可以直接设置对象字面量的原型。例如,
1 let person = { 2 getGreeting() { 3 return "hello"; 4 } 5 }; 6 7 let dog = { 8 getGreeting() { 9 return "woof" 10 } 11 }; 12 13 //原型是person 14 let friend = { 15 __proto__: person 16 }; 17 console.log(friend.getGreeting()); // "hello" 18 console.log(Object.getPrototypeOf(friend) === person); // true 19 console.log(friend.__proto__ === person); // true 20 21 //将原型设置为dog 22 friend.__proto__ = dog; 23 console.log(friend.getGreeting()); // "woof" 24 console.log(friend.__proto__ === dog); // true 25 console.log(Object.getPrototypeOf(friend) === dog); // true
(本节完)