在Javascript中,我们可以编写:
var obj = {
log: ['a', 'b', 'c'],
get latest() {
if (this.log.length == 0) {
return undefined;
}
return this.log[this.log.length - 1];
}
}
console.log(obj.latest); // Outputs "c"
发件人:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get
现在,我必须打电话给obj[key]
来使getter
正常工作。现在:
let obj = {
get root () {
return 2
}
}
console.log(obj) // Returns { root: [Getter] }, I would like it to return "2"
我们可以通过某种方式使obj
返回2
吗?
答案 0 :(得分:3)
要调用该函数,您需要使用obj.root
let obj = {
get root() {
return 2
}
}
console.log(obj.root)
另一方面,您只需写obj = obj.root
let obj = {
get root() {
return 2
}
}
obj = obj.root
console.log(obj)
答案 1 :(得分:1)
您可以使用IIFE(立即调用函数表达式)在功能定义后立即运行。
let obj = {
root: (function() {
return 2;
})()
}
console.log(obj);
这将提供所需的输出。请注意,在这种情况下,IFFE不会增加太多的价值,因为与在对象上简单定义root: 2
相同。