javascript - ES2015函数名属性?

标签 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,深感困扰!

最佳答案

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/

相关文章:

javascript - 使用 DOJO 在 Javascript 中格式化字符串

javascript - 简单的 es6 promise ;如何进行n个任意操作?

javascript - 我可以用更简洁的方式声明变量吗

javascript - 在javascript中以编程方式触发devicemotion事件?

javascript - 从逻辑表达式创建 AST

javascript - 如何使 ES6 类最终(不可子类化)

javascript - 如何在 ES6 中将渲染函数中的 Jsx 分离到一个单独的文件中?或任何其他解决方案以将逻辑和表示分开?

reactjs - 在 react 中获取图像的确切宽度和高度

javascript - Javascript 中的自定义轮数

asp.net - 如何在 JavaScript 中检测/跟踪回发?