学习笔记: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();
相关文章推荐
- 设计模式学习笔记——修饰模式(Decorator Pattern)
- java 设计模式学习笔记九 decorator装饰模式
- ES6 学习笔记(下)
- ES6 学习笔记之一《let和const命令》
- ElasticSearch学习笔记--2、ES相关配置
- ES权威指南[官方文档学习笔记]-10 search lite
- ES权威指南[官方文档学习笔记]-43 Routing a document to a shard
- ES权威指南[官方文档学习笔记]-27 Data in, data out
- ES权威指南[官方文档学习笔记]-55 Exact values vs. Full text
- Java菜鸟学习笔记--面向对象篇(二):封装与访问修饰符
- Java学习笔记46. 继承与访问权限修饰符
- ES6 学习笔记之二 块作用域与闭包
- 设计模式学习笔记(三)装饰模式(Decorator)
- 设计模式学习笔记--装饰者模式(Decorator Pattern)
- 黑马程序员—C学习笔记—static和extern修饰的函数和变量
- ES6 学习笔记之《函数的扩展》
- ES(elasticsearch)学习笔记(1)
- java 设计模式学习笔记九 decorator装饰模式
- 学习笔记:ES6之Symbol
- [学习笔记]设计模式之Decorator