修饰器是一个函数,用来修改类的行为(注意: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'
;
}
//对类进行修饰
@typename
class 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
转载请注明原文地址: https://mac.8miu.com/read-72214.html