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