我有一个功能,例如boot:
function boot(){
return("Arbitrary value");
}
就像你可以监听onload,onclick,onkeydown等,有没有简单的方法(不修改启动功能)来做一些onboot?
[编辑]
看到混乱,我会解释更多。
想象一下,我无法控制的脚本已导入。随机调用引导函数,当调用引导函数时,我无法控制的脚本想要做某事。编写脚本的人想做这样的事情:onboot = function(){consoe.log(" what")}
这是可能的吗?
谢谢, -Dylan
答案 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。我的解决方案创建了一个自定义事件,该事件将由调用函数触发。
假设我们有功能base
和called
,base
一旦完成就调用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
,您将获得以下结果: