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
,让我深感不安!
答案 0 :(得分:4)
firstName
是一个getter函数,因此person.firstName
调用该函数,并返回该getter的返回值。这意味着您正在读取返回的"Nicholas"
字符串的name属性,该字符串没有name
属性(因此,undefined
)。
您可以使用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);