javascript-功能Hook的执行顺序如何工作?

时间:2018-10-26 06:29:37

标签: javascript

我不知道如何在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');
}

谢谢您的回答

1 个答案:

答案 0 :(得分:1)

据我所知,由于函数初始化,您的getListByElement()没有调用。您要在初始化之前调用functionalHook()。

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()];