Javascript ES2015函数名属性?
我刚刚看到了一个示例,Javascript ES2015函数名属性?,javascript,ecmascript-6,Javascript,Ecmascript 6,我刚刚看到了一个示例,person.firstName.name预期输出 var person = { sayName() { console.log(this.name); }, get firstName() { return "Nicholas"; } }; person.sayName.name // "sayName" person.firstName.name // "get firstName" 但我从巴贝尔那里得到的是未定义的,深深困扰着我
person.firstName.name
预期输出
var person = {
sayName() {
console.log(this.name);
},
get firstName() {
return "Nicholas";
}
};
person.sayName.name // "sayName"
person.firstName.name // "get firstName"
但我从巴贝尔那里得到的是未定义的,深深困扰着我
firstName
是一个getter函数,因此person.firstName
调用该函数,并返回该getter的返回值。这意味着您正在读取返回的“Nicholas”
字符串的name属性,该字符串没有name
属性(因此,未定义
)
您可以使用获取对getter函数的引用:
get firstName
工作示例:
var-person={
sayName(){
console.log(this.name);
},
获取名字(){
返回“尼古拉斯”;
}
};
log(Object.getOwnPropertyDescriptor(person,'firstName').get.name)
预期输出get firstName
-你是从哪里得到这个想法的?person.firstName
返回一个字符串而不是一个对象。也许你刚才看到的示例是不正确的-我们只有你的发言权,这样一个示例存在,并且在ES2015环境(例如node.js)中看到代码输出未定义的
我确信您可能误解了“示例”,或者“示例”完全是错误的-不必为错误信息而深感困扰,@Jaromanda X请看这里,中文页面这似乎是一个相当做作的示例,为什么您关心分配给sayName属性的函数的“名称”是什么?根据函数分配给属性的方式,其名称可以是任何有效标识符,也可以是未定义的标识符。
Object.getOwnPropertyDescriptor(person, 'firstName').get.name