第一种情况(保存引用至变量a,在修改变量a的值
):
var obj = [
{
name:
{
test: 'nihao'
}
}
];
// 未修改的对象
console.log('原始对象:' , JSON.parse(JSON.stringify(obj)));
// 保存引用
var data = obj[0]['name'];
// 修改
data = 'hello'; // 修改不会作用到对象 obj !!
console.log('修改name属性后的对象:' , JSON.parse(JSON.stringify(obj)));
上面代码执行结果预览:
第二种情况(不保存引用,直接修改
):
var obj = [
{
name:
{
test: 'nihao'
}
}
];
// 未修改的对象
console.log('原始对象:' , JSON.parse(JSON.stringify(obj)));
// 不保存引用后修改,即直接修改
obj[0]['name'] = 'hello'; // 能够作用到对象 Obj!!
console.log('修改name属性后的对象:' , JSON.parse(JSON.stringify(obj)));
上面代码运行结果预览:
为什么会出现如此奇葩的现象??我实在不太明白....,求解惑
data
直接被赋值为hello
了,和obj[0]['name']
无关