typescript方法装饰器以及装饰器执行的顺序
dearweb 发布:2021-08-01 11:31:36阅读:方法装饰器会被应用到方法的属性描述符上,可以用来监视,修改或者替换方法的定义,会在运动时传入下列3个参数
1.对于静态成员来说是类的构造函数,对于实例成员是类的原型对象;
2.成员的名字;
3.成员的属性描述符;
方法装饰器一
// 方法装饰器一 function logMethod(params:any){ return function(target:any,methodName:any,desc:any){ console.log(target,methodName,desc) target.apiUrl = 'nnnnnnn' target.run = function(){ console.log('run') } } } class HttpClient { public url:any| undefined constructor() { } @logMethod('http:dearweb.cn') getData(){ console.log(this.url) } }
方法装饰器二
function logMethod(params:any){ return function(target:any,methodName:any,desc:any){ // console.log(target,'\n',methodName,'\n',desc.value) // 修改装饰器的方法 把装饰器方法里面传入的所有参数改为string类型 // 保存当前方法 let oMethod= desc.value desc.value = function(...args:any[]){ args = args.map((value)=>{ return String(value) }) console.log(args) // ["123", "456"] oMethod.apply(this,args) } } } class HttpClient { public url:any| undefined constructor() { } @logMethod('http:dearweb.cn') getData(...args:any[]){ console.log(args) // ["123", "456"] console.log('我是get方法') } } let http = new HttpClient() http.getData(123,'456')
小伙伴们上面就是方法装饰器的基本用法,你们看懂了吗?
小礼物走一波,支持作者
赏还没有人赞赏,支持一波吧