mirror of
https://github.com/ruanyf/es6tutorial.git
synced 2024-04-21 12:32:22 +00:00
docs(decorator): edit decorator
This commit is contained in:
+8
-8
@@ -2,19 +2,19 @@
|
||||
|
||||
## 类的修饰
|
||||
|
||||
修饰器(Decorator)是一个函数,用来修改类的行为。这是ES7的一个[提案](https://github.com/wycats/javascript-decorators),目前Babel转码器已经支持。
|
||||
|
||||
修饰器对类的行为的改变,是代码编译时发生的,而不是在运行时。这意味着,修饰器能在编译阶段运行代码。
|
||||
修饰器(Decorator)是一个函数,用来修改类的行为。这是 ES 的一个[提案](https://github.com/wycats/javascript-decorators),目前 Babel 转码器已经支持。
|
||||
|
||||
```javascript
|
||||
@testable
|
||||
class MyTestableClass {
|
||||
// ...
|
||||
}
|
||||
|
||||
function testable(target) {
|
||||
target.isTestable = true;
|
||||
}
|
||||
|
||||
@testable
|
||||
class MyTestableClass {}
|
||||
|
||||
console.log(MyTestableClass.isTestable) // true
|
||||
MyTestableClass.isTestable // true
|
||||
```
|
||||
|
||||
上面代码中,`@testable`就是一个修饰器。它修改了`MyTestableClass`这个类的行为,为它加上了静态属性`isTestable`。
|
||||
@@ -31,7 +31,7 @@ class A {}
|
||||
A = decorator(A) || A;
|
||||
```
|
||||
|
||||
也就是说,修饰器本质就是编译时执行的函数。
|
||||
注意,修饰器对类的行为的改变,是代码编译时发生的,而不是在运行时。这意味着,修饰器能在编译阶段运行代码。也就是说,修饰器本质就是编译时执行的函数。
|
||||
|
||||
修饰器函数的第一个参数,就是所要修饰的目标类。
|
||||
|
||||
|
||||
+1
-1
@@ -890,7 +890,7 @@ jsonToMap('[[true,7],[{"foo":3},["abc"]]]')
|
||||
|
||||
### 含义
|
||||
|
||||
`WeakMap`结构与`Map`结构类似,也是用于生成键值对。
|
||||
`WeakMap`结构与`Map`结构类似,也是用于生成键值对的集合。
|
||||
|
||||
```javascript
|
||||
// WeakMap 可以使用 set 方法添加成员
|
||||
|
||||
Reference in New Issue
Block a user