2017-07-12 32 views
0

是否有可能在JavaScript中創建一個像PHP一樣的鉤子系統?創建JavaScript鉤子可能嗎?

爲例----

function myjsfunction(){ 

    call_my_function('handle_name'); 

} 

現在什麼功能的人應該得到那裏執行「把手」名稱添加。

add_to_function('handle_name', function(){alert('hi')}); 
add_to_function('handle_name', function(){alert('hello')}); 

這兩個功能應該執行

+0

所以,你正在尋找JS **和** PHP的答案嗎? – Justinas

+0

js anwer其實 – Alice

回答

1
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,你可以簡單地將它們存儲在一個對象一流。

USECASE:

add_to_function("log",console.log.bind(console,"this will log ")); 

call_my_function("log","sth cool!"); 

實現與IIFE:

http://jsbin.com/joxigabeyi/edit?console

+0

WOW !!!現在就去嘗試,但是可以避免'var hooks'用戶定義的變量嗎?意味着像dom或其他任何東西一樣的全局...所以它不會依賴於該用戶變量的初始化 – Alice

+0

@Alice可能會將它包裝成一個IIFE ... –

+0

IIFE?我真的不知道這一點:( – Alice