是否可以给一个对象动态财产,或者说给一个对象的属性一动态值?例如:动态属性值而不是函数?
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
没有它的属性值更改beeing更新中...
我希望你能帮助我:)
你要找的ES5干将。但'.length'不是动态的;字符串是不可变的。 – SLaks
@SLaks提到,重要的是要注意'String#length'不是一个动态属性,因为字符串的内部值不能被改变。 – Phylogenesis
你的字符串示例不能证明你的观点。您正在创建另一个长度不同的新字符串。与你的对象相当的是:var obj = {c:21};的console.log(obj.c); obj = {c:42};的console.log(obj.c);'。看,'c'也改变了“动态”;) –