0
var obj = { hi : 'hello' };
function myFunction(arg) {
console.log(arg.hi);
}
myFunction(obj);
起作用如果我叫myFunction
,確實JavaScript引擎通obj
作爲參考?或複製?
此外,我怎麼能看到?(重複?)當傳遞對象在JavaScript
var obj = { hi : 'hello' };
function myFunction(arg) {
console.log(arg.hi);
}
myFunction(obj);
起作用如果我叫myFunction
,確實JavaScript引擎通obj
作爲參考?或複製?
此外,我怎麼能看到?(重複?)當傳遞對象在JavaScript
對象通過引用不按值傳遞。 所以你必須小心改變函數內部的對象。
你可以在我的代碼片段中看到。
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.
如果它是一個對象 - 它將它作爲參考(指向特定對象的地址)傳遞它。這將是同一個對象。在該函數中應用的任何更改都會影響該對象。
爲了使一個副本,你可以使用Object.assign
在JavaScript中的所有對象都被視爲引用..你可以看得懂它,而通過簡單地作爲OBJ1 = obj2的克隆分配一個對象到另一個obj2的任何變化將在OBJ1反映因爲obj2將是對obj1的引用 –
謝謝你的回答!我立即解決了...... –