Javascript - как работает функциональность hook order of execution?

Я не знаю, как спросить об этом в Google, поэтому я спросил здесь, console.log из функции getListByElement() здесь не будет выполняться, Я модифицирую очень большой существующий проект и использую функциональные хуки для целей проверки и выполняю этот крючок для определенных событий .on, я хочу знать, почему console.log не запускается, который выполняется первым,

Order of execution on my understanding
1. trigger event function for the field `fieldName`
2. fieldName.functionalityHook = [Apple.functionalityHook()];
3. Apple.functionalityHook = function(func) {
4. return function(e) {
5. getListByElement(ele); and display console.log();
6. return func;

Вот пример кода, который у меня есть,

var Apple= window.Apple; // global

fieldName.functionalityHook = [Apple.functionalityHook()];

Apple.functionalityHook = function(func) {

        return function(e) {

            var ele = $(e.target);

            getListByElement(ele);

            return func;
        }
}

function getListByElement(ele){
    console.log('ele here');
}

Спасибо за ответ,

Поскольку мы не знаем, как вызывается fieldName.functionalityHook, мы не можем сказать вам, почему функция не выполняется.

Felix Kling 26.10.2018 08:36
1
1
39
1

Ответы 1

как я понимаю, ваш getListByElement () не вызывается из-за инициализации функции. Вы вызываете functionHook () перед его инициализацией.

fieldName.functionalityHook = [Apple.functionalityHook()];

Apple.functionalityHook = function(func) {..........

и этот вызов возвращает функцию

return function(e) {

        var ele = $(e.target);

        getListByElement(ele);

        return func;
    }

и внутри этой функции вызывает getListByElement ().

Итак, правильное расположение кода должно быть таким.

var Apple= window.Apple;

function getListByElement(ele){
    console.log('ele here');
}

Apple.functionalityHook = function(func) {

    return function(e) {

        var ele = $(e.target);

        getListByElement(ele);

        return func;
    }
}

fieldName.functionalityHook = [Apple.functionalityHook()];

Хороший улов! Это должно быть очевидно, если ОП посмотрел на консоль своего браузера.

Felix Kling 26.10.2018 21:50

Другие вопросы по теме