javascript是通过引用还是按值处理对象?

时间:2010-02-15 16:17:10

标签: javascript jquery

我有这段代码

var myObjects = {}; //global variable

//Later on in the code:
for (i in myObjects)
{
    var obj = myObjects[i];
    process(obj);
}

function process(obj)
{
    $.getJSON("example.com/process/", {id: obj.id}, function(result)
      {
          //Will the following change the permanent/global copy e.g 
          // myObjects[44] ?
          obj.addItem(result.id, result.name, result.number);
      }
    );
}

请注意以下内容:

     obj.addItem(result.id, result.name, result.number);

按值或按引用修改对象,即它会修改objmyObjects[44]的本地副本吗?

如果它仅影响本地副本,我该如何更改对象的全局副本?

3 个答案:

答案 0 :(得分:4)

原始变量在JavaScript中按值传递,但是对象通过引用传递。

来源和进一步阅读:

答案 1 :(得分:1)

JavaScript正在按值传递,正如earlier question中所阐明的那样。 (拥有更多权力的人应该将此标记为重复 - 此处的答案不正确。)

答案 2 :(得分:0)

所有非对象变量都是按值传递..