本篇文章将介绍类里面属性装饰器的使用。
定义类属性装饰器
// target: 类原型
// key: 类属性名
function nameDecorator(target: any, key: string): any {
// 修改类原型上的属性值
target[key] = '类属性装饰器'
}
class Test6{
@nameDecorator
name:string
constructor(name: string) {
this.name = name
}
}
const test6 = new Test6('jake')
console.log(test6)
打印结果:
为什么输出的结果是这样?
是因为类属性装饰器修改的实际上是类原型上的属性值。类声明的属性是存储在类声明的实例上的,所以修改原型属性值,并不会对实例上的属性有任何作用。