调用另一个时调用函数

时间:2016-01-10 03:49:57

标签: javascript function

我有一个功能,例如boot:

function boot(){
    return("Arbitrary value");
}

就像你可以监听onload,onclick,onkeydown等,有没有简单的方法(不修改启动功能)来做一些onboot?

[编辑]

看到混乱,我会解释更多。

想象一下,我无法控制的脚本已导入。随机调用引导函数,当调用引导函数时,我无法控制的脚本想要做某事。编写脚本的人想做这样的事情:onboot = function(){consoe.log(" what")}

这是可能的吗?

谢谢, -Dylan

4 个答案:

答案 0 :(得分:1)

您可以执行类似于您想要的操作,但不能修改启动。您可以更改引导功能,以便您可以注册在调用引导时调用的事件处理程序,如下所示:

var callbacks = [];
function boot() {
    callbacks.forEach(function(f) { f(); });
    return "Arbitrary value";
}
function registerBootCallback(f) {
    callbacks.push(f);
}

请注意,启动功能不需要显式调用处理程序。

如果您无法修改引导功能本身,但是您可以控制它被调用的任何地方,请创建一个调用引导和所有回调的新函数,并直接调用它而不是引导。如果你无法改变引导并且无法控制它到处调用(并且某种回调机制已经不存在),那么你就不幸了。

也有一些库可以让它更容易一些,并允许你做事件传播等事情。

答案 1 :(得分:1)

您可以在代码中覆盖boot函数,而无需在脚本中更改它。

var real_boot = boot
boot = function () {
    // insert your code
    real_boot()
}

答案 2 :(得分:0)

如果该功能可全局访问。您可以使用自己的函数覆盖该函数,然后在您自己的函数中调用旧函数。

例如

另一lib.js

function boot(){
    //Do something internally that you dont have control over
}

您-file.js

var oldBoot = boot;
function boot(){
   oldBoot.call(this, arguments);
   //Do your stuff here
}

答案 3 :(得分:0)

this documentation。我的解决方案创建了一个自定义事件,该事件将由调用函数触发。

假设我们有功能basecalledbase一旦完成就调用called

var onboot = new Event('onboot');

document.addEventListener('onboot' called);

function base () { 
  // I do stuff 
  console.log("base");
  document.dispatchEvent(onboot);
}

function called () {
  // do stuff here 
  console.log("called");
}

因此,如果您现在致电base,您将获得以下结果:

enter image description here