@@ -658,13 +658,13 @@ class Personal extends Person {
658
658
659
659
## Symbols
660
660
661
- 符号(Symbols)在ES6版本之前就已经存在了 ,但现在我们拥有一个公共的接口来直接使用它们。
662
- Symbols对象是一旦创建就不可以被更改的 (immutable)而且能被用做hash数据类型中的键 。
661
+ Symbols在ES6版本之前就已经存在了 ,但现在我们拥有一个公共的接口来直接使用它们。
662
+ Symbols是不可更改的 (immutable)并且唯一的(unique),它可用作任何hash数据类型中的键 。
663
663
664
664
### Symbol( )
665
- 调用 ` Symbol() ` 或者 ` Symbol(描述文本) ` 会创建一个唯一的、在全局中不可以访问的符号对象 。
665
+ 调用 ` Symbol() ` 或者 ` Symbol(描述文本) ` 会创建一个唯一的、在全局中不可以访问的Symbol对象 。
666
666
一个 ` Symbol() ` 的应用场景是:在自己的项目中使用第三方代码库,且你需要给他们的对象或者命名空间打补丁代码,又不想改动或升级第三方原有代码的时候。
667
- 举个例子 ,如果你想给 ` React.Component ` 这个类添加一个 ` refreshComponent ` 方法,但又确定不了这个方法会不会在下个版本中加入,你可以这么做:
667
+ 例如 ,如果你想给 ` React.Component ` 这个类添加一个 ` refreshComponent ` 方法,但又确定不了这个方法会不会在下个版本中加入,你可以这么做:
668
668
669
669
``` javascript
670
670
const refreshComponent = Symbol ();
@@ -677,7 +677,7 @@ React.Component.prototype[refreshComponent] = () => {
677
677
### Symbol.for(key)
678
678
679
679
使用 ` Symbol.for(key) ` 也是会创建一个不可改变的Symbol对象,但区别于上面的创建方法,这个对象是在全局中可以被访问到的。
680
- 调用两次 ` Symbol.for(key) ` 会返回相同的Symbol实例 。
680
+ 两次相同的 ` Symbol.for(key) ` 调用会返回相同的Symbol实例 。
681
681
682
682
** 提示** :这并不同于 ` Symbol(description) ` 。
683
683
@@ -687,9 +687,9 @@ Symbol.for('foo') === Symbol('foo') // false
687
687
Symbol .for (' foo' ) === Symbol .for (' foo' ) // true
688
688
```
689
689
690
- 一个Symbols常用的使用场景,是需要使用特别 ` Symbol.for(key) ` 方法来实现代码间的协作 。
691
- 这能让你在你的代码中,查找包含已知的接口的第三方代码中Symbol成员。(译者:这句话好难翻。。。原文:This can be
692
- achieved by having your code look for a Symbol member on object arguments from third parties that contain some known interface. )举个例子 :
690
+ Symbols常用的一个使用场景,尤其是使用 ` Symbol.for(key) ` 方法,是用于实现代码间的互操作 。
691
+ 在你的代码中,通过在包含一些已知接口的第三方库的对象参数中查找Symbol成员,你可以实现这种互操作。
692
+ 例如 :
693
693
694
694
``` javascript
695
695
function reader (obj ) {
@@ -716,13 +716,14 @@ class SomeReadableType {
716
716
}
717
717
```
718
718
719
- > ** 注意** :` Symbol.iterable ` 在ES6中像其他可枚举的对象,如数组,字符串,generators一样,当这个方法被调用时会激活一个枚举器并返回一个对象。
719
+ > ** 注意** :关于Symbol互操作的使用,一个值得一提的例子是` Symbol.iterable ` 。` Symbol.iterable ` 存在ES6的所有可枚举对象中:数组(Arrays)、
720
+ > 字符串(strings)、生成器(Generators)等等。当它作为一个方法被调用时,它将会返回一个带有枚举接口的对象。
720
721
721
722
<sup >[ (回到目录)] ( #table-of-contents ) </sup >
722
723
723
724
## Maps
724
725
725
- ** Maps** 是一个Javascript中很重要 (迫切需要)的数据结构。
726
+ ** Maps** 是一个JavaScript中很重要 (迫切需要)的数据结构。
726
727
在ES6之前,我们创建一个 ** hash** 通常是使用一个对象:
727
728
728
729
``` javascript
0 commit comments