我可以直接调用一个函数(以
然而,当我将一个函数放入对象中时,调用它就不再起作用了:
alert
为例),如下所示:alert("Hello World!"); // pops up an alert window
然而,当我将一个函数放入对象中时,调用它就不再起作用了:
d = {func: alert};
d.func("Hello World!"); // doesn't do anything
d["func"]("Hello World!"); // also doesn't do anything
我想也许需要明确传递一个空的this
参数,所以我尝试了以下代码:
d.func(null, "Hello World!") // still nothing
但是没有用。有趣的是,这确实起作用。
d.func.apply(null, ["Hello World!"]); // success!
但这种写法过于冗长,让我感到非常难受(引用 JWZ 的话)。有没有更简洁、更美观的写法呢?
var myAlert = alert; myAlert("Hello, World!"); // Works!
这对我来说看起来像是棘手的浏览器行为。 - Andrew Noyes