修饰器是一个函数,用来修改类的行为(注意:1、函数 2、修改行为 3、对类进行操作)
{//修饰器函数定义 target:类本身,name名称,descriptor描述let readonly = function(target, name, descriptor) {descriptor.writable = false; //只读return descriptor};//类中
class Test {@readonly //调用修饰器
time() {return '2017-03-11'}}let test = new Test();// test.time=function(){// console.log('reset time');// }; //不允许只读属性的方法重新赋值
console.log(test.time()); //2017-03-11
}{let typename = function(target, name, descriptor) {target.myname = 'hello';}//对类进行修饰
@typenameclass Test {}console.log('类修饰符', Test.myname); //hello// 第三方库修饰器的js库:core-decorators; npm install core-decorators
}{let log = (type) =>{return function(target,name,descriptor){let src_method = descriptor.value;descriptor.value = (...arg)=>{src_method.apply(target,arg);console.info(`log ${type}`);}}}class AD{@log('show') //log show
show(){console.log('ad is show') //ad is show
}@log('click') //log click
click(){console.log('ad is click') //ad is click
}}let ad = new AD();ad.show();ad.click();
}
更多专业前端知识,请上 【猿2048】www.mk2048.com