在声明期间访问对象中的先前值

时间:2012-03-14 19:08:57

标签: javascript jquery object accessibility self

  

可能重复:
  Self-references in object literal declarations

var obj = {
    value: 10,
    value2: value + 2
};

我该怎么办? (假设它甚至可能)

我使用了很多jQuery的$.extend来添加更多依赖于之前添加的值的属性;所以修改一些值会自动纠正其余的值。

2 个答案:

答案 0 :(得分:4)

你不能在声明中做到这一点,但你总是可以做一个功能。以下内容始终返回的值大于存储在值中的值2:

var obj = {
    value: 10,
    getValue2: function(){ return this.value + 2; }
};

如果您不希望value2的值与值一起更改,您可以声明占位符变量并使用该声明声明对象:

var placeholder = 10;

var obj = {
    value: placeholder,
    value2: placeholder + 2
};

答案 1 :(得分:1)

如果您在申报时可以这样做,我不是100%肯定。但是,您可以在之后执行此操作:

使用extend:

var obj = {
    value: 10
};

$.extend(obj, {
    value2: obj.value + 2
});

http://jsfiddle.net/KgKgf/

只是javascript:

var obj = {
    value: 10
};

obj.value2 = obj.value + 2;

http://jsfiddle.net/KgKgf/1/