javascript - 访问器属性及其函数名称

标签 javascript function ecmascript-6 getter

ECMAScript 6 中的所有函数的 name 属性都将具有适当的值。那么访问器属性(getter 和 setter)的那些名称又如何呢?

示例(来自 Understanding ECMAScript 6 书):

var doSomething = function doSomethingElse() {
    // empty
};

var person = { 
    get firstName() {
        return "Nicholas"
    },
    sayName: function() {
        console.log(this.name);
    }
}

console.log(doSomething.name); // "doSomethingElse"
console.log(person.sayName.name); // "sayName"
console.log(person.firstName.name); // undefined, instead of "get firstName"

你能解释一下为什么person.firstName.name返回undefined吗?

最佳答案

由于 person.firstName 是一个 getter,返回值是 getter 返回的值(示例中的 "Nicholas"),而不是 getter 函数本身,所以你无法以这种方式访问​​其名称。

为了获得对该函数的引用,您可以使用 Object.getOwnPropertyDescriptor :

var person = { 
    get firstName() {
        return "Nicholas"
    },
}

var descriptor = Object.getOwnPropertyDescriptor(person, 'firstName');

console.log(descriptor);
console.log(descriptor.get.name);

关于javascript - 访问器属性及其函数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41865554/

相关文章:

javascript - 在 JAVASCRIPT 中重新加载页面时保存变量的当前值

javascript - 如何在完成所有请求后调用函数

JavaScript 函数适用于 Chrome,但不适用于 IE

c - 如何使用Goto功能

javascript - 为什么我的函数变成了对象?

javascript - 此 javascript 函数和显示命令示例的更高效版本

javascript - 元素保留 Javascript 函数?

javascript - 为什么这个类似数组的对象会有这样的行为?

javascript - 点击处理程序 ECMAscript 6 中的范围

javascript - 在 javaScript 中创建用户方法时出现 firebase.auth() 错误