ES2015功能名称属性?

时间:2016-12-23 03:28:09

标签: javascript ecmascript-6

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,让我深感不安!

1 个答案:

答案 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);