【问题标题】:javascript passing an object into function [duplicate]javascript将对象传递给函数[重复]
【发布时间】:2013-04-09 11:08:55
【问题描述】:
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 传递给函数时发生了什么?第一个函数使它看起来没有通过;第二个函数看起来好像通过了

【问题讨论】:

  • 在第一个函数中,您将 null 分配给变量 x,而不是 o。如果你想将它分配给o,你必须通过引用传递它。

标签: javascript function object


【解决方案1】:

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

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

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

【讨论】:

  • 我只是在想有没有办法从闭包中删除对象而不返回......
【解决方案2】:
(function(x){
  x=null
})(o); 

x“指向”o,但您只是将x 指定为指向另一事物null,因此不会更改o

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

在此代码中,您将更改 x 指向的任何属性(添加 foobar),即 o。此更改将反映到o

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    • 2011-09-15
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    • 2012-11-13
    • 2020-07-27
    相关资源
    最近更新 更多