让我们看一个例子:
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失败?
答案 0 :(得分:0)
在S1和S2中,您正在为新值/对象更改X的值。对“对象”的引用被破坏并分配了一个新指针。因此,您不再更改“原始”对象。
但是,在S3上,您正在修改现有对象的属性。该引用仍然保留,因此,您同时更改“对象”和“x”属性。