比如下例:
var objA = {
a:{a1:"a1"},
b:"b1"
};
var objB = {b1:"b1"};
var c = objA.a;
c = objB;
console.log(objA);
得到的结果是:
[object Object] {
a: [object Object] {
a1: "a1"
},
b: "b1"
}
但是下面的程序:
var objA = {
a:{a1:"a1"},
b:"b1"
};
var objB = {b1:"b1"};
var c = objA.a;
c.c1 = "c1";
console.log(objA);
得到的结果是:
[object Object] {
a: [object Object] {
a1: "a1",
c1: "c1"
},
b: "b1"
}
为什么赋值时是对象就不能成功?
第一个你就理解成 c 的指针只是从
objA.a
移给了objB
,移动后c
和objA.a
已没有关系啦,后面的因为两个都是指向同一个对象的原因所以会同时修改。