javascript指针函数
如果我有:javascript指针函数,javascript,function,pointers,Javascript,Function,Pointers,如果我有: function init(t,y,u) { alert(t + " " + y + " " + u); } // String.prototype.add = init(5, 6, 7); // 1) // window.onload = init(5,6,7); // 2) 在1)中,将执行init,然后将其指针分配到String.prototype.add 但在2)中,该函数只执行一次。。。但为什么不两次呢 当引发onload事件时 谢谢 在1)中,将执行i
function init(t,y,u)
{
alert(t + " " + y + " " + u);
}
// String.prototype.add = init(5, 6, 7); // 1)
// window.onload = init(5,6,7); // 2)
在1)中,将执行init
,然后将其指针分配到String.prototype.add
但在2)中,该函数只执行一次。。。但为什么不两次呢
当引发onload
事件时
谢谢
在1)中,将执行init,然后将其指针指定为String.prototype.add
不会的。只需执行该函数,其返回值(undefined
)将分配给String.prototype.add
。不会分配任何函数指针。为此,您需要返回一个函数
function init(t,y,u) {
alert(t + " " + y + " " + u);
return function () { alert('function call!'); };
}
您可能需要以下内容:
String.prototype.add = function () { init(5, 6, 7); };
这就是您的代码所发生的情况:
- 使用三个参数定义一个名为init的函数,调用该函数时将发出警报
- 使用参数5,6,7调用函数init(将弹出警报),并将结果(未定义)分配给String.prototype.add
- 使用参数5,6,7调用函数init(将弹出警报),并将结果(未定义)分配给window.onload
如果上面的代码是在激发window.onload事件之前执行的,那么在激发它时不会发生任何事情,因为它被设置为未定义。要返回自身:return arguments.callee;