(重复?)当将对象传递给 JavaScript 中的函数时
(duplicate?) When pass an object to function in JavaScript
var obj = { hi : 'hello' };
function myFunction( arg ) {
console.log( arg.hi );
}
myFunction( obj );
如果我调用 myFunction
,javascript 引擎会通过 obj
作为参考吗?还是复制?
还有,我怎么才能看到?
如果它是一个对象 - 它将它作为引用传递(指向特定对象的地址)。这将是同一个对象。在函数内应用的任何更改都会影响对象。
要制作副本,您可以使用 Object.assign
对象通过引用而不是值传递。
所以你必须小心改变函数内的对象。
你可以在这里看到我的代码片段。
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.
var obj = { hi : 'hello' };
function myFunction( arg ) {
console.log( arg.hi );
}
myFunction( obj );
如果我调用 myFunction
,javascript 引擎会通过 obj
作为参考吗?还是复制?
还有,我怎么才能看到?
如果它是一个对象 - 它将它作为引用传递(指向特定对象的地址)。这将是同一个对象。在函数内应用的任何更改都会影响对象。
要制作副本,您可以使用 Object.assign
对象通过引用而不是值传递。 所以你必须小心改变函数内的对象。
你可以在这里看到我的代码片段。
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.