【发布时间】:2012-03-31 07:13:18
【问题描述】:
var obj = {
value: 10,
value2: value + 2
};
我该怎么做? (假设它甚至是可能的)
我正在使用很多 jQuery 的$.extend 来添加更多依赖于之前添加的值的属性;这样修改一些值会自动更正其余的值。
【问题讨论】:
标签: javascript jquery object accessibility self
var obj = {
value: 10,
value2: value + 2
};
我该怎么做? (假设它甚至是可能的)
我正在使用很多 jQuery 的$.extend 来添加更多依赖于之前添加的值的属性;这样修改一些值会自动更正其余的值。
【问题讨论】:
标签: javascript jquery object accessibility self
你不能在声明中这样做,但你总是可以创建一个函数。以下将始终返回比 value 中存储的值大 2 的值:
var obj = {
value: 10,
getValue2: function(){ return this.value + 2; }
};
如果您不希望 value2 的值随 value 一起改变,您可以声明一个占位符变量并使用它声明对象:
var placeholder = 10;
var obj = {
value: placeholder,
value2: placeholder + 2
};
【讨论】:
this.value 否则你会得到错误:'value' is undefined。
obj.value2 与obj.value 无关。但是,在您的解决方案中,当您增加 obj.value 时,obj.getValue2() 的结果也会增加。 jsfiddle.net/8zWNs
我不能 100% 确定您是否可以在声明时这样做。但是,您可以事后进行:
使用扩展:
var obj = {
value: 10
};
$.extend(obj, {
value2: obj.value + 2
});
只是 javascript:
var obj = {
value: 10
};
obj.value2 = obj.value + 2;
【讨论】:
.extend() 来为对象添加属性?太矫枉过正了!你的第二个例子是正确的,但第一个是......愚蠢的。