1
0
mirror of https://github.com/ruanyf/es6tutorial.git synced 2025-05-29 13:52:22 +00:00

edit docs/destructuring

This commit is contained in:
ruanyf 2014-05-14 16:36:24 +08:00
parent 6bb960ee4e
commit 86c40d6467
3 changed files with 15 additions and 13 deletions

View File

@ -159,7 +159,7 @@ var x;
``` ```
上面代码的写法会报错因为JavaScript引擎会将`{x}`理解成一个代码块,从而发生语法错误。只有不将大括号写在行首,才能避免这个问题。 上面代码的写法会报错因为JavaScript引擎会将`{x}`理解成一个代码块,从而发生语法错误。只有不将大括号写在行首,避免JavaScript将其解释为代码块才能解决这个问题。
```javascript ```javascript

View File

@ -193,26 +193,28 @@ symbol的最大特点就是每一个symbol都是不相等的保证产生
```javascript ```javascript
let red = Symbol(); let w1 = Symbol();
let green = Symbol(); let w2 = Symbol();
let blue = Symbol(); let w3 = Symbol();
function handleColor(color) { function f(w) {
switch (color) { switch (w) {
case red: case w1:
... ...
case green: case w2:
... ...
case blue: case w3:
... ...
} }
} }
``` ```
上面代码中,red、green、blue三个变量都是Symbol类型它们的值是不相等的。 上面代码中,w1、w2、w3三个变量都等于`Symbol()`,但是它们的值是不相等的。
由于这种特点Symbol类型适合作为标识符用于对象的属性名保证了属性名之间不会发生冲突。如果一个对象由多个模块构成不会出现同名的属性。 由于这种特点Symbol类型适合作为标识符用于对象的属性名保证了属性名之间不会发生冲突。如果一个对象由多个模块构成这样就不会出现同名的属性。
Symbol类型作为属性名可以被遍历Object.getOwnPropertySymbols()和Object.getOwnPropertyKeys()都可以获取该属性。
```javascript ```javascript

View File

@ -286,7 +286,7 @@ map.forEach(function(value, key, map) {
WeakMap结构与Map结构基本类似唯一的区别是它只接受对象作为键名null除外不接受原始类型的值作为键名。 WeakMap结构与Map结构基本类似唯一的区别是它只接受对象作为键名null除外不接受原始类型的值作为键名。
WeakMap的设计目的在于键名是对象的弱引用垃圾回收机制不将该引用考虑在内所以其所对应的对象可能会被自动回收。当对象被回收后WeakMap自动移除对应的键值对。典型应用是一个对应DOM元素的WeakMap结构当某个DOM元素被清除其所对应的WeakMap记录就会自动被移除。基本上WeakMap的专用场合就是它的键所对应的对象可能会在将来消失。 WeakMap的设计目的在于键名是对象的弱引用垃圾回收机制不将该引用考虑在内所以其所对应的对象可能会被自动回收。当对象被回收后WeakMap自动移除对应的键值对。典型应用是一个对应DOM元素的WeakMap结构当某个DOM元素被清除其所对应的WeakMap记录就会自动被移除。基本上WeakMap的专用场合就是它的键所对应的对象可能会在将来消失。WeakMap结构有助于防止内存泄漏。
下面是WeakMap结构的一个例子可以看到用法上与Map几乎一样。 下面是WeakMap结构的一个例子可以看到用法上与Map几乎一样。
@ -308,4 +308,4 @@ console.log(value); // undefined
``` ```
WeakMap还有has和delete方法但没有size方法也无法遍历它的值这与WeakMap的键被垃圾回收机制忽略有关。 WeakMap还有has和delete方法但没有size方法也无法遍历它的值这与WeakMap的键不被计入引用、被垃圾回收机制忽略有关。