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;設定されます。したがって、 を更新すると、 に設定された値が更新されるだけです。pprop1pp

できることは に設定さpれていobj1.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 に答える