是否可以像 php 一样在 javascript 中创建一个钩子(Hook)系统?
举个例子----
function myjsfunction(){
call_my_function('handle_name');
}
现在,无论人们添加带有“handle”名称的函数,它都应该在那里执行。
喜欢
add_to_function('handle_name', function(){alert('hi')});
add_to_function('handle_name', function(){alert('hello')});
这两个函数都应该执行
最佳答案
var hooks = {};
function add_to_function(name, func) {
if(!hooks[name]) hooks[name] = [];
hooks[name].push(func);
}
function call_my_function(name, ...params){
if(hooks[name])
hooks[name].forEach(func => func(...params));
}
由于函数是 js 中的第一类,因此您可以简单地将它们存储在对象中。
用例:
add_to_function("log", console.log.bind(console, "this will log "));
call_my_function("log", "sth cool!");
使用 IIFE 实现:
关于javascript - 可以创建 javascript 钩子(Hook)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45054782/