0

当我做 :

img.onload=fn;

函数 fn 获取argument[0] [object Event].

我怎样才能避免这种情况?

4

2 回答 2

3

您不会避免事件对象。你拥抱他们。话虽如此,如果您不想使用它,则不必使用它。当浏览器在onload事件中触发时,无论您是否请求它,它都会将一个事件对象传递给处理程序。正如您所指出的,arguments即使您没有在处理程序参数中专门为其提供名称,它也存在于数组中。

正如其他人在他们的回答和评论中指出的那样,您可以添加另一个匿名函数来进一步从引发的事件中删除您的响应代码,但我个人认为这真的没有必要。

正如@Yoshi 在上面的评论中指出的那样,以下方法可行:

img.onload = function() { 
  fn.call(this) 
};

这将调用fn传入当前上下文this引用的方法。同样,我个人只是避免接触事件对象,因为这种类型的代码可能会在六周后让其他人和你自己感到困惑。

于 2012-04-19T16:15:54.427 回答
0

除了乔纳森桑普森的回答,一个简单的解决方法可以像这样完成

img.onload = function() {
   fn();
}

这样做arguments是空的,
请参阅小提琴(使用 javascript 控制台):http: //jsfiddle.net/ZxSEX/

于 2012-04-19T16:24:21.007 回答