1ответ(ов) в теме
Владимир написал о использовании в javascript функций rcl_add_action / rcl_do_action (по сути это EventEmitter), я решил посмотреть на реализацию и мне кажется ее можно немного улучшить.
На данный момент в экшене можно регистрировать только функции которые лежат в глобальном скоупе, но в js есть такая вещь как замыкания и мне кажется стоит это использовать. Для EventEmitter'а это вообще, думаю, обязательно.
Все что надо сделать это заменить тут:
Вы не можете просматривать опубликованные ссылки
window[callback].apply( this, args );
На
if(window[callback]) window[callback].apply(this, args); if(typeof callback === 'function') callback.apply(this, args);
Что это нам даст?
Во-первых все старые callback которые объявлены в глобальном скоупе и переданы строчкой (именем функции) продолжат работать.
Но теперь можно будет в rcl_add_action передавать стрелочные функции или функции из своей области видимости.
Например теперь будет работать такой код
(function(){ const message = 'Rcl инициализирован'; function show_message(){ console.log(message); } rcl_add_action('rcl_init', show_message); })()
или такой
(function(){ const message = 'Rcl инициализирован'; rcl_add_action('rcl_init', () => { console.log(message); }); })()
Вы не имеете права на публикацию сообщений в этой теме