3

我有以下对象:

var obj1 = {};

obj1.obj2 = {
  prop1: 0
};

和以下功能:

function func1() {
    var p = obj1.obj2.prop1;
    p += 2;
    return p;
 };

更新“p”时,它没有更新“obj1.obj2.prop1”。而不是指向原始对象的“p”现在是它自己的对象吗?如果是这样,我怎样才能使'p'成为指针?

4

3 回答 3

4

当您这样做时var p = obj1.obj2.prop1;,您将设置p为 的值prop1。因此,当您更新时p,您只是在更新中设置的值p

你可以做的是设置pobj1.obj2. 然后你可以更新p.prop1,它应该更新obj1

function func1() {
    var p = obj1.obj2;
    p.prop1 += 2;
    return p.prop1;
}
于 2013-05-20T19:04:45.497 回答
1

Javascript 没有按引用传递,因此您必须执行以下操作:

var obj1 = {};

obj1.obj2 = {
    prop1: 0
};

function func1(obj) {
    obj.obj2.prop1 += 2;
    return obj.obj2.prop1;
};

func1(obj1);
于 2013-05-20T19:03:17.690 回答
1

p += 2只是为 分配了一个其他数字p,这并没有修改 . 指向的对象p

改为这样做:

obj1.obj2.prop1 += 2;

或者

var obj = obj1.obj2;
obj.prop1 += 2;
于 2013-05-20T19:03:39.950 回答