2016-07-22 30 views
0
var obj = { hi : 'hello' }; 

function myFunction(arg) { 
    console.log(arg.hi); 
} 

myFunction(obj); 

起作用如果我叫myFunction,確實JavaScript引擎通obj作爲參考?或複製?
此外,我怎麼能看到?(重複?)當傳遞對象在JavaScript

+0

在JavaScript中的所有對象都被視爲引用..你可以看得懂它,而通過簡單地作爲OBJ1 = obj2的克隆分配一個對象到另一個obj2的任何變化將在OBJ1反映因爲obj2將是對obj1的引用 –

+0

謝謝你的回答!我立即解決了...... –

回答

1

對象通過引用不按值傳遞。 所以你必須小心改變函數內部的對象。

你可以在我的代碼片段中看到。

var o = { 
 
    'msg': 'Say Hi!' 
 
    }; 
 

 
function myFun(arg) { 
 
    console.log(arg.msg); 
 
    // This should not be accessible 
 
    // from global scope if is a copy 
 
    arg.msg = 'Bye'; 
 
} 
 

 
myFun(o); 
 

 
// Check what appened 
 
console.log(o.msg); 
 

 
// It is passed by reference.

0

如果它是一個對象 - 它將它作爲參考(指向特定對象的地址)傳遞它。這將是同一個對象。在該函數中應用的任何更改都會影響該對象。

爲了使一個副本,你可以使用Object.assign