怎么解决修改一个值为对象的属性时出现的奇葩现象??

第一种情况(保存引用至变量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)));

上面代码执行结果预览:

https://img1.mukewang.com/5bcec989000117bc03600257.jpg

第二种情况(不保存引用,直接修改):

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)));

上面代码运行结果预览:

https://img1.mukewang.com/5bcec99d0001a64c03180182.jpg

为什么会出现如此奇葩的现象??我实在不太明白....,求解惑

茅侃侃
浏览 565回答 1
1回答

桃花长相依

data直接被赋值为hello了,和obj[0]['name']无关
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript