{
// 1.修饰器是一个函数 2.修改行为 3.修改类的行为
let readonly=function (target,name,descriptor) {
descriptor.writable=false
return descriptor
}
class Test{
@readonly
time(){
return '2020-05-02'
}
}
let test = new Test()
test.time=function(){
console.log(2)
}
console.log(test.time())
}
{
let typename=function(target,name,descriptor){
target.myname='hello'
}
@typename
class Test{
}
console.log('类修饰符',Test.myname)
// 第三方库 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.log(`log ${type}`)
// 实际 new img.src 接口
}
}
}
class ad{
@log('show')
show(){
console.info('ad is show')
}
@log('click')
click(){
console.log('ad is click')
}
}
let ad = new ad()
ad.show()
ad.click()
}