【发布时间】:2017-01-09 16:29:29
【问题描述】:
是否可以给一个对象一个动态 属性,或者更确切地说给一个对象属性一个动态 值?例如:
var obj = {
a: 0,
b: 5,
c: //should always be a+b
}
显然我可以使用 方法 c=function(){return a+b},但我总是需要使用大括号(obj.c() 而不是 @ 987654325@)。这并不是一个真正的问题,但我相信它必须以某种方式工作,因为length 属性中的构建也是一个属性,而不是一个函数。此属性随对象动态变化,而不是函数...
var str = "hello world";
console.log(str.length); //11
str = "hello stack overflow";
console.log(str.length); //20
属性值在没有更新的情况下发生变化...
我希望你能帮助我:)
【问题讨论】:
-
您正在寻找 ES5 吸气剂。但是
.length不是动态的;字符串是不可变的。 -
正如@SLaks 提到的,重要的是要注意
String#length不是动态属性,因为字符串的内部值无法更改。 -
您的字符串示例并不能证明您的观点。您正在创建另一个长度不同的新字符串。与您的对象等效的是:
var obj = {c: 21}; console.log(obj.c); obj = {c: 42}; console.log(obj.c);。看,c也“动态地”改变了;)
标签: javascript object methods dynamic properties