(重复吗?)传递一个对象以在JavaScript

时间:2016-07-22 08:42:59

标签: javascript javascript-objects

 var obj = { hi : 'hello' };

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

 myFunction( obj );

如果我致电myFunction,javascript引擎是否会将obj作为参考?或复制?
那么,我怎么能看到它?

2 个答案:

答案 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.

答案 1 :(得分:0)

如果它是一个对象 - 它将它作为参考传递(指向特定对象的地址)。它将成为同一个对象。函数中应用的任何更改都将影响对象。

要制作副本,您可以使用Object.assign