您的位置:首页 > 其它

学习笔记:ES6之Decorator--修饰器

2017-09-22 17:20 471 查看

(1)基本概念

是一个函数,修改行为,修改类的行为,只在类的范畴内有用

(2)基本用法

//定义修饰器
第一种用法:在类的里面使用
letreadonly=function(target,name,descriptor){
descriptor.writable=false;
returndescriptor;
};
classTest{
@readonly//引入修饰器,修改time()的行为
time(){
return'2017-07-21';
}
}
lettest=newTest();
test.time=function(){//修饰器设置的只读属性,不能进行修改会报错
console.log('resettime')
};
console.log(test.time());

第二种用法:在类的外面使用
lettypename=function(target,name,descriptor){
target.myname='hello';
};
@typename
classTest{
 
}
console.log(Test.myname);
扩展:
第三方库修饰器的js库:core-decorators;
npm install core-decorators
就不用自己手动的写readonly,typename等,只需要import引入就可以使用
 
//埋点,做日志统计
letlog=(type)=>{
return function(target,name,descriptor){
letsrc_method=descriptor.value;
descriptor.value=(...arg)=>{
src_method.apply(target,arg);
console.info(`log${type}`);//实现埋点,真实的业务中直接换成一个接口就可以了
}
}
};
classAD{
@log('show')
show(){
console.log('adisshow');
};
@log('click')
click(){
console.log('adisclick');
}
}
letad=newAD();
ad.show();
ad.click();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  es6 descriptor