如何将对象存储在临时变量中?

时间:2015-05-09 16:37:53

标签: javascript

  RPGDATA = {
    turkey: 'Leg',
    chicken: 'Muffin'
}
var tempdata = RPGDATA;

    RPGDATA.turkey = 'NoLeg';

console.log(tempdata); // Why is this showing NoLeg? It should be 'Leg'?

console.log(RPGDATA);

关于jsfiddle:http://jsfiddle.net/njxd7eLy/1/

当控制台记录tempdata时,它是否显示了应用了更改的新对象的属性?

编辑:在这里查看一个示例:http://jsfiddle.net/zLeufxfm/旧数据存储在该tempdata变量中,但它不包含对象?

2 个答案:

答案 0 :(得分:3)

JavaScript中的对象通过引用传递。如果要单独更改每个对象,则需要克隆该对象。

JSON对象可以帮助简化这一点。

http://jsbin.com/sonapebawo/1/edit?js,console

var myObj = {
  name: 'bob',
  age: '42'
};

var copy = JSON.parse(JSON.stringify(myObj));

myObj.newProp = 'Hello';

copy.otherProp = 'Yo';

console.log(copy, myObj);

一些文档:

JSON Object

Working with objects

答案 1 :(得分:1)

输出应为“NoLeg”。正如Oka的回答所提到的:JavaScript中的对象通过引用传递。

此图表非常简单,有助于了解如何在JavaScript中传递值:http://huaban.com/pins/169758716/