decorator

修饰器 Decorator

修饰器本质是一个函数,用于对类进行处理。
在其他语言例如python也存在修饰器。

1
2
3
4
5
6
7
8
9
// 首先,我有一个类
class kinds(){
constructor(name){
this.name = name
}
}

let ab = new kinds('aning')
console.log(ab)

如上,会在浏览器的控制台中log一个类,name属性值为 ‘aning’

接着我定义一个修饰器,其本质就是一个函数。

1
2
3
4
5
// decorator

function deco(target){
target.addAttr = 'xxx'
}

然后我用这个修饰器去修饰kinds类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@deco
class kinds {
constructor(name){
this.name = name
}
};

// decorator
function deco(target){
target.add = 'deco'
};

let ab = new kinds('aning')
console.log(ab)

// 其实就相当于把kinds类放入deco函数中,这里的操作是给kinds类新增一个属性。

那么这个kinds类的实例ab,便拥有两个属性,一个是name,一个是add。

不过由于特性还尚未全面支持,在浏览器中可能报错。

其实修饰器的作用便是在不改变对象的情况下,对对象进行额外操作。

JS中的修饰器目前不能对函数进行修饰。

文章作者: Luo Jun
文章链接: /2018/05/09/decorator/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Aning