javascript将对象传递给函数

时间:2013-04-09 11:08:55

标签: javascript function object

var o = {};
(function(x){x=null})(o);       //o is NOT null after this statement
(function(x){x.foo = "foo"; x.bar = "bar";})(o)   //o has properties foo and bar after this statement

将对象o传递给函数时会发生什么?第一个功能使得它似乎没有通过;第二个函数使得它似乎被传递

2 个答案:

答案 0 :(得分:5)

第1行:创建一个对象。对它的引用传递给o

第2行:调用一个函数。对象的引用作为参数传递。然后使用x覆盖引用(在null中)(不触及对象本身或仍然分配给o的引用)。

第3行:调用一个函数。对象的引用作为参数传递。 foobar属性将添加到对象并分配值。

答案 1 :(得分:4)

(function(x){
  x=null
})(o); 

x“指向”o,但您刚刚指定x指向另一件事,null因此不会更改o

(function(x){
  x.foo = "foo"; 
  x.bar = "bar";
})(o);

在此代码中,您正在更改foo所指向的属性(添加barx),即o。此更改将反映到o