张森ZS

write code everyday

导航

读书笔记:深入理解ES6 (附录A)

附录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

 

 

(本节完)

posted on 2019-09-15 15:22  张森ZS  阅读(210)  评论(0编辑  收藏  举报