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/