我有這樣的代碼JavaScript是否通過引用或按值處理對象?
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);
通過值或引用修改對象,即會對其進行修改的obj
或e.g myObjects[44]
本地副本?
如果它隻影響本地副本,我怎麼能改變它的全局副本?
請注意,它比這更小一些:如果通過調用「new String('hi mom')」創建一個字符串,那麼它有時會像字符串一樣工作,但它會像參數傳遞的對象那樣工作。也就是說,它是通過引用傳遞的。 – Pointy 2010-02-15 16:36:20
實際上,字符串在js中是不可變的。因此,你總是通過引用傳遞它們。對字符串的所有操作都會返回一個新字符 – 2010-02-15 19:39:00
在JavaScript中,當你傳遞一個對象時,你確實是通過值傳遞了一個對象引用。請參閱[早期問題](http://stackoverflow.com/a/518069/379428)。 – Andrew 2012-12-10 23:36:10