Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript指针函数_Javascript_Function_Pointers - Fatal编程技术网

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;