问题描述
const changeDestination = (value: string) => (target: Object,propertyKey: string) => {
Object.defineProperty(target,propertyKey,{ value })
}
class Rocket {
@changeDestination('Mars')
destination = 'Moon'
}
const rocket = new Rocket()
console.log(rocket.destination) // -> Mars
console.log(rocket) // -> Rocket {}
为什么 destination
属性没有显示在第二个日志中,当第一个日志确认时,它实际上存在?喜欢:
Rocket { destination: 'Mars' }
谢谢!
解决方法
装饰器函数在直接访问属性时调用,而不是在类实例化时调用。 结果:实例化后属性未定义。