Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在声明期间访问对象中以前的值_Javascript_Jquery_Object_Accessibility_Self - Fatal编程技术网

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;