var person = {
sayName() {
console.log(this.name);
},
get firstName() {
return "Nicholas";
}
};
person.sayName.name // "sayName"
person.firstName.name // "get firstName"
我刚看到一个例子,person.firstName.name
预期输出
get firstName
但是我通过babel得到的是undefined
,深感困扰!
最佳答案
firstName
是一个 getter 函数,因此 person.firstName
调用该函数,并返回该 getter 的返回值。这意味着您正在读取返回的 "Nicholas"
字符串的名称属性,该字符串没有 name
属性(因此,未定义
) .
你可以使用 Object.getOwnPropertyDescriptor
获取对 getter 函数的引用:
Object.getOwnPropertyDescriptor(person, 'firstName').get.name
工作示例:
var person = {
sayName() {
console.log(this.name);
},
get firstName() {
return "Nicholas";
}
};
console.log(Object.getOwnPropertyDescriptor(person, 'firstName').get.name);
关于javascript - ES2015函数名属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41294782/