修饰器 Decorator
修饰器本质是一个函数,用于对类进行处理。
在其他语言例如python也存在修饰器。
1 | // 首先,我有一个类 |
如上,会在浏览器的控制台中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中的修饰器目前不能对函数进行修饰。