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

docs(decorator): edit method decorator

This commit is contained in:
ruanyf 2017-12-05 21:42:30 +08:00
parent d808c68ce0
commit 075c27b54d
2 changed files with 5 additions and 3 deletions

View File

@ -148,7 +148,7 @@ class Person {
上面代码中,修饰器`readonly`用来修饰“类”的`name`方法。 上面代码中,修饰器`readonly`用来修饰“类”的`name`方法。
此时,修饰器函数一共可以接受三个参数,第一个参数是所要修饰的目标对象,即类的实例(这不同于类的修饰,那种情况时`target`参数指的是类本身);第二个参数是所要修饰的属性名,第三个参数是该属性的描述对象 修饰器函数`readonly`一共可以接受三个参数。
```javascript ```javascript
function readonly(target, name, descriptor){ function readonly(target, name, descriptor){
@ -168,7 +168,9 @@ readonly(Person.prototype, 'name', descriptor);
Object.defineProperty(Person.prototype, 'name', descriptor); Object.defineProperty(Person.prototype, 'name', descriptor);
``` ```
上面代码说明修饰器readonly会修改属性的描述对象descriptor然后被修改的描述对象再用来定义属性。 修饰器第一个参数是类的原型对象,上例是`Person.prototype`,修饰器的本意是要“修饰”类的实例,但是这个时候实例还没生成,所以只能去修饰原型(这不同于类的修饰,那种情况时`target`参数指的是类本身);第二个参数是所要修饰的属性名,第三个参数是该属性的描述对象。
另外上面代码说明修饰器readonly会修改属性的描述对象descriptor然后被修改的描述对象再用来定义属性。
下面是另一个例子,修改属性描述对象的`enumerable`属性,使得该属性不可遍历。 下面是另一个例子,修改属性描述对象的`enumerable`属性,使得该属性不可遍历。

View File

@ -530,7 +530,7 @@ for (let b in oproxy2) {
// 99 // 99
``` ```
上面代码中,`has`拦截只对`in`循环生效,对`for...in`循环不生效,导致不符合要求的属性没有被排除在`for...in`循环之外。 上面代码中,`has`拦截只对`in`运算符生效,对`for...in`循环不生效,导致不符合要求的属性没有被排除在`for...in`循环之外。
### construct() ### construct()