ES6中Decorator修饰器的用法
2019-06-22 本文已影响0人
易路先登
Decorator是一个函数,用来修改类的行为,即可修饰类的静态属性,也可修饰类的原型上的函数。
- 修改类的静态属性
function addName(name){
return function(target) {
target.name = name;
}
};
@addName('zhangsan')
class Person{}
console.log(Person.name);//zhangsan
- 修改类的原型方法
function readonly(target, name, descriptor){
// descriptor对象原来的值如下
// {
// value: specifiedFunction,
// enumerable: false,
// configurable: true,
// writable: true
// };
descriptor.writable = false;
return descriptor;
}
class Person {
@readonly
name() { return '被修饰的函数' }
}
//如此Person原型上的name函数就不可被覆盖
let per = new Person();
per.name = function(){};//这步相当于覆盖原型方法,因为修饰了不可被覆盖,所以会报错