解释javascript对象分配

时间:2017-03-11 02:53:03

标签: javascript object

让我们看一个例子:

let object = {
    a: {
        b: 1
    }
};

现在我要修改object.a中的x

S.1)

let x = object.a;
x = 2;

console.log(object);

结果:

[object Object] {
  a: [object Object] {
    b: 1
  }
}

s.2

let x = object.a;
x = { b: 2 };

console.log(object);

结果:

[object Object] {
  a: [object Object] {
    b: 1
  }
}

S.3

let x = object.a;
x.b = 2;
x.c = 2;

console.log(object);

结果:

[object Object] {
  a: [object Object] {
    b: 2,
    c: 2
  }
}

为什么s.1和s.2失败?

1 个答案:

答案 0 :(得分:0)

在S1和S2中,您正在为新值/对象更改X的值。对“对象”的引用被破坏并分配了一个新指针。因此,您不再更改“原始”对象。

但是,在S3上,您正在修改现有对象的属性。该引用仍然保留,因此,您同时更改“对象”和“x”属性。