【十月打卡】第62天 TypeScript(18)
標(biāo)簽:
Typescript
类的方法修饰器
方法修饰器的用法
参数:
- target:当前方法所在的对象
- key:当前方法的名称
- descriptor:当前方法的描述符
原型上的方法的target就是原型
function getNameDecoration(target: any, key: string, descriptor: any) {
console.log(target === Test.prototype); // true
}
class Test {
constructor(private name: string) {}
@getNameDecoration
getName() {
return this.name;
}
}
类的方法的target就是类本身
function getNameDecoration(target: any, key: string, descriptor: any) {
console.log(target === Test); // true
}
class Test {
constructor(private name: string) {}
@getNameDecoration
static getName() {
return this.name;
}
}
属性描述符descriptor
descriptor.value
可以修改属性的值
function getNameDecoration(target: any, key: string, descriptor: any) {
descriptor.value = () => {
return 'abc';
};
}
class Test {
constructor(private name: string) {}
@getNameDecoration
getName() {
return this.name;
}
}
const test = new Test('hello');
console.log(test.getName()); // abc
如果装饰器属性描述符descriptor.writable = false;
那么该属性可读不可写
如下类的原型和实例都不可以重写方法
function getNameDecoration(target: any, key: string, descriptor: any) {
descriptor.writable = false;
}
class Test {
constructor(private name: string) {}
@getNameDecoration
getName() {
return this.name;
}
}
const test = new Test('hello');
test.getName = () => {
return '123';
};
點擊查看更多內(nèi)容
為 TA 點贊
評論
評論
共同學(xué)習(xí),寫下你的評論
評論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦