是否可以给一个对象赋予一个动态属性,或者说给一个对象属性赋予一个动态的值?例如:
var obj = {
a: 0,
b: 5,
c: //should always be a+b
}
显然,我可以使用一个方法c=function(){return a+b}
,但这样我就必须总是使用括号来调用c
作为一个方法(obj.c()
而不是obj.c
)。虽然这不会真正成为问题,但我相信它必须以某种方式工作,因为内置的length
属性也是一个属性而不是一个函数。这个属性随着对象而动态地改变,并不是一个函数...
var str = "hello world";
console.log(str.length); //11
str = "hello stack overflow";
console.log(str.length); //20
属性值在没有更新的情况下发生了变化...
希望可以帮助您 :)
.length
不是动态的,字符串是不可变的。 - SLaksString#length
不是一个动态属性,因为字符串的内部值是不可更改的。 - Phylogenesisvar obj = {c: 21}; console.log(obj.c); obj = {c: 42}; console.log(obj.c);
。看,c
也被“动态”地改变了 ;) - Felix Kling