1 ответ(ов) в теме
Preci
не в сети 9 часов
На сайте с 11.11.2014
Участник
Тем 66
Сообщения 1011
1
16:18
Версия WP-Recall: 16.18.20

Владимир написал о использовании в 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);
});

})()

3
Вы не имеете права на публикацию сообщений в этой теме