From 075c27b54dccdb6466ab0613373bdbd7b06b4162 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Tue, 5 Dec 2017 21:42:30 +0800 Subject: [PATCH] docs(decorator): edit method decorator --- docs/decorator.md | 6 ++++-- docs/proxy.md | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/decorator.md b/docs/decorator.md index 15cf50c..4843634 100644 --- a/docs/decorator.md +++ b/docs/decorator.md @@ -148,7 +148,7 @@ class Person { 上面代码中,修饰器`readonly`用来修饰“类”的`name`方法。 -此时,修饰器函数一共可以接受三个参数,第一个参数是所要修饰的目标对象,即类的实例(这不同于类的修饰,那种情况时`target`参数指的是类本身);第二个参数是所要修饰的属性名,第三个参数是该属性的描述对象。 +修饰器函数`readonly`一共可以接受三个参数。 ```javascript function readonly(target, name, descriptor){ @@ -168,7 +168,9 @@ readonly(Person.prototype, 'name', descriptor); Object.defineProperty(Person.prototype, 'name', descriptor); ``` -上面代码说明,修饰器(readonly)会修改属性的描述对象(descriptor),然后被修改的描述对象再用来定义属性。 +修饰器第一个参数是类的原型对象,上例是`Person.prototype`,修饰器的本意是要“修饰”类的实例,但是这个时候实例还没生成,所以只能去修饰原型(这不同于类的修饰,那种情况时`target`参数指的是类本身);第二个参数是所要修饰的属性名,第三个参数是该属性的描述对象。 + +另外,上面代码说明,修饰器(readonly)会修改属性的描述对象(descriptor),然后被修改的描述对象再用来定义属性。 下面是另一个例子,修改属性描述对象的`enumerable`属性,使得该属性不可遍历。 diff --git a/docs/proxy.md b/docs/proxy.md index d890d6c..d6b7772 100644 --- a/docs/proxy.md +++ b/docs/proxy.md @@ -530,7 +530,7 @@ for (let b in oproxy2) { // 99 ``` -上面代码中,`has`拦截只对`in`循环生效,对`for...in`循环不生效,导致不符合要求的属性没有被排除在`for...in`循环之外。 +上面代码中,`has`拦截只对`in`运算符生效,对`for...in`循环不生效,导致不符合要求的属性没有被排除在`for...in`循环之外。 ### construct()