【发布时间】:2020-01-13 16:18:33
【问题描述】:
获取函数名是pretty straightforward:
const func1 = function() {}
const object = {
func2: function() {}
}
console.log(func1.name);
// expected output: "func1"
console.log(object.func2.name);
// expected output: "func2"
但是,我怎样才能获得 getter/setter 的 字符串名称?
class Example {
get hello() {
return 'world';
}
}
const obj = new Example();
重要提示:
我不想想使用硬编码字符串:
Object.getOwnPropertyDescriptor(Object.getPrototypeOf(obj), 'hello')
但是得到名字,例如:
console.log(getGetterName(obj.hello))
// expected output: "hello"
【问题讨论】:
-
我的问题显然不是重复的,因为我不想通过字符串名称访问 getter,而是要获取它的字符串表示形式。
-
@NicholasTower 我认为打字稿在这里实际上很重要,其想法是构造是类型安全的。
-
你不能。使用 get 或 set 创建的属性被视为“伪”属性。您必须知道道具的字符串名称才能使用它,并且它是不可发现的。所以其他人说“你可以找到
hello”道具是正确的——但你必须知道hello。 -
请,请,请,请澄清您的问题!不在 cmets 中,实际编辑您的问题,以反映您的真实意图!
标签: javascript typescript getter-setter