gpt4 book ai didi

javascript - Typescript 方法装饰器

转载 作者:行者123 更新时间:2023-12-03 02:43:19 25 4
gpt4 key购买 nike

我有这个代码

function changeFunc() {
return function(target: any, title: string, descriptor: PropertyDescriptor) {

descriptor.value = function () {
console.log(this.name);
};

return descriptor;

}
}


class Man {
name: string = "asdsds";

constructor(name: string) {
this.name = name;
}

@changeFunc()
getName() {
console.log("Hello");
}

}


var man = new Man('Manos Serifios');
man.getName();

换句话说,我尝试(与装饰器)改变方法

getName() {  
console.log("Hello");
}

有了这个

function () {
console.log(this.name);
}

但是 this.name 被评估为未定义。

如果我控制台记录“this”,那么似乎这是正确的(实例人)。

最佳答案

装饰器方法内没有特定对象实例的上下文。参数如下(来自 https://www.typescriptlang.org/docs/handbook/decorators.html ):

Either the constructor function of the class for a static member, or the prototype of the class for an instance member.

The name of the member.

The Property Descriptor for the member.

关于javascript - Typescript 方法装饰器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48217146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com