Javascript 在声明期间访问对象中以前的值
可能重复:Javascript 在声明期间访问对象中以前的值,javascript,jquery,object,accessibility,self,Javascript,Jquery,Object,Accessibility,Self,可能重复: 我怎样才能做到以上几点?(假设这是可能的) 我使用了很多jQuery的$;因此,修改一些值会自动更正其余的值。您不能在声明中这样做,但您始终可以创建一个函数。以下内容将始终返回一个比存储在值中的值大2的值: var obj = { value: 10, getValue2: function(){ return this.value + 2; } }; 如果不希望value2的值随值一起更改,可以声明占位符变量并使用该变量声明对象: var placeholder
我怎样才能做到以上几点?(假设这是可能的)
我使用了很多jQuery的
$;因此,修改一些值会自动更正其余的值。您不能在声明中这样做,但您始终可以创建一个函数。以下内容将始终返回一个比存储在值中的值大2的值:
var obj = {
value: 10,
getValue2: function(){ return this.value + 2; }
};
如果不希望value2的值随值一起更改,可以声明占位符变量并使用该变量声明对象:
var placeholder = 10;
var obj = {
value: placeholder,
value2: placeholder + 2
};
我不能100%确定您在申报时是否可以这样做。但是,您可以在以后再这样做:
使用扩展:
var obj = {
value: 10
};
$.extend(obj, {
value2: obj.value + 2
});
只是javascript:
var obj = {
value: 10
};
obj.value2 = obj.value + 2;
和的可能重复。基于这个答案,您可以创建value和value2私有变量,并为obj提供一个通用的“get”函数。这应该是这个。value
否则您会得到错误:“value”未定义
@gilly3-意味着它在那里…输入错误。固定的。谢谢你指出这一点。需要指出的一点是,两者在功能上并不等同。在第一个示例中,初始化后,obj.value 2
与obj.value
无关。但是,在您的解决方案中,当您递增obj.value
时,obj.getValue2()
的结果也会递增@gilly3-没错,但是如果OP真的想要你所说的行为,那么定义对象而不引用以前的值就足够容易了。天哪,为什么有人会使用.extend()
只是为了向对象添加属性?太过分了!你的第二个例子是正确的,但第一个是。。。愚蠢。@gilly3我同意这不是这个工作的合适工具,但是OP提到他正在使用extend添加属性,所以我想我会展示一个使用extend的示例。很公平。。。我错过了他问题中的那一部分。@gilly3谢谢你取消了你的否决票:D
var obj = {
value: 10
};
obj.value2 = obj.value + 2;