这无济于事。如何获得物业总和obj
?
var obj = {
a: {
value: 1
},
b: {
value: 2
},
sum: {
value: obj.a.value + obj.b.value
}
};
console.log(obj.sum);
答案 0 :(得分:4)
sum
本身就是一个JavaScript函数。所以这是有效的:
var obj = {
a: {
value: 1
},
b: {
value: 2
},
get sumValue(){
return this.a.value + this.b.value
}
};
您可以详细了解对象方法here。
答案 1 :(得分:3)
你需要在内联getter中使用这样的文字来编写自反射表达式:
var obj = {
a: {
value: 1
},
b: {
value: 2
},
get sum(){
return this.a.value + this.b.value
}
};
console.log(obj.sum); // shows: 3
这是ES5,但经常过度看。它适用于所有主流浏览器(甚至是IE8)和节点。
getter语法很好,因为obj.sum
就像一个数字一样,并在a
和b
更改时自动更新。
当然,使用方法(一个函数)可能更传统,并将其称为obj.sum()
,因为它向其他编码员表明它是"计算属性& #34;或多或少...
答案 2 :(得分:1)
在对象初始值设定项中,尚未将对象分配给变量obj
。然后,obj
未定义,因此您无法使用obj.a.value
。
但是你可以通过实例化一个匿名函数来实现类似的东西:
var obj = new function() {
this.a = {
value: 1
};
this.b = {
value: 2
};
this.sum = {
value: this.a.value + this.b.value
};
};
答案 3 :(得分:0)
看起来你试图在你的对象中添加一个方法,如果是这样的话,它应该是这样的:
var obj = {
a: {
value: 1
},
b: {
value: 2
},
sum:function() {
return this.a.value + this.b.value
}
};
console.log(obj.sum); //Returns the function object
console.log(obj.sum()); //Returns the value 3