我有以下对象:
var obj1 = {};
obj1.obj2 = {
prop1: 0
};
和以下功能:
function func1() {
var p = obj1.obj2.prop1;
p += 2;
return p;
};
更新“p”时,它没有更新“obj1.obj2.prop1”。而不是指向原始对象的“p”现在是它自己的对象吗?如果是这样,我怎样才能使'p'成为指针?
我有以下对象:
var obj1 = {};
obj1.obj2 = {
prop1: 0
};
和以下功能:
function func1() {
var p = obj1.obj2.prop1;
p += 2;
return p;
};
更新“p”时,它没有更新“obj1.obj2.prop1”。而不是指向原始对象的“p”现在是它自己的对象吗?如果是这样,我怎样才能使'p'成为指针?
当您这样做时var p = obj1.obj2.prop1;
,您将设置p
为 的值prop1
。因此,当您更新时p
,您只是在更新中设置的值p
。
你可以做的是设置p
为obj1.obj2
. 然后你可以更新p.prop1
,它应该更新obj1
。
function func1() {
var p = obj1.obj2;
p.prop1 += 2;
return p.prop1;
}
Javascript 没有按引用传递,因此您必须执行以下操作:
var obj1 = {};
obj1.obj2 = {
prop1: 0
};
function func1(obj) {
obj.obj2.prop1 += 2;
return obj.obj2.prop1;
};
func1(obj1);
p += 2
只是为 分配了一个其他数字p
,这并没有修改 . 指向的对象p
。
改为这样做:
obj1.obj2.prop1 += 2;
或者
var obj = obj1.obj2;
obj.prop1 += 2;