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
+1 -1
View File
@@ -159,7 +159,7 @@ var x;
```
上面代码的写法会报错,因为JavaScript引擎会将`{x}`理解成一个代码块,从而发生语法错误。只有不将大括号写在行首,才能避免这个问题。
上面代码的写法会报错,因为JavaScript引擎会将`{x}`理解成一个代码块,从而发生语法错误。只有不将大括号写在行首,避免JavaScript将其解释为代码块,才能解决这个问题。
```javascript
+12 -10
View File
@@ -193,26 +193,28 @@ symbol的最大特点,就是每一个symbol都是不相等的,保证产生
```javascript
let red = Symbol();
let green = Symbol();
let blue = Symbol();
let w1 = Symbol();
let w2 = Symbol();
let w3 = Symbol();
function handleColor(color) {
switch (color) {
case red:
function f(w) {
switch (w) {
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
+2 -2
View File
@@ -286,7 +286,7 @@ map.forEach(function(value, key, map) {
WeakMap结构与Map结构基本类似,唯一的区别是它只接受对象作为键名(null除外),不接受原始类型的值作为键名。
WeakMap的设计目的在于,键名是对象的弱引用(垃圾回收机制不将该引用考虑在内),所以其所对应的对象可能会被自动回收。当对象被回收后,WeakMap自动移除对应的键值对。典型应用是,一个对应DOM元素的WeakMap结构,当某个DOM元素被清除,其所对应的WeakMap记录就会自动被移除。基本上,WeakMap的专用场合就是,它的键所对应的对象,可能会在将来消失。
WeakMap的设计目的在于,键名是对象的弱引用(垃圾回收机制不将该引用考虑在内),所以其所对应的对象可能会被自动回收。当对象被回收后,WeakMap自动移除对应的键值对。典型应用是,一个对应DOM元素的WeakMap结构,当某个DOM元素被清除,其所对应的WeakMap记录就会自动被移除。基本上,WeakMap的专用场合就是,它的键所对应的对象,可能会在将来消失。WeakMap结构有助于防止内存泄漏。
下面是WeakMap结构的一个例子,可以看到用法上与Map几乎一样。
@@ -308,4 +308,4 @@ console.log(value); // undefined
```
WeakMap还有has和delete方法,但没有size方法,也无法遍历它的值,这与WeakMap的键被垃圾回收机制忽略有关。
WeakMap还有has和delete方法,但没有size方法,也无法遍历它的值,这与WeakMap的键不被计入引用、被垃圾回收机制忽略有关。