立即对象初始化混乱

时间:2013-10-11 13:45:40

标签: javascript jquery

我正在使用一个使用JScroll的js文件。 jsp-scroll-y事件的回调在以下函数中定义

 function initWall() {
     //callback from jqueryscrollpane
     Scroll_TimeLine_Instance = function (event, scrollPositionY, isAtTop, isAtBottom){     
         //get more content
         if (isAtBottom) {
             GetMoreDate(objid, vwrsid, secid, orgid, incflwr, qty, mintlid, maxtlid, successGetTimeLineCallback, failureGetTimeLineCallback);
         }
     }();
}

定义了另一个函数,然后将此回调绑定到jsScroll

function reapplyScroll() {
     Utilities.DestroyScrollBar($(_target).closest('.widgetBody'));
     Utilities.ApplyScrollBar($(_target).closest('.widgetBody'), false, Scroll_TimeLine_Instance);
            }

Utilities.ApplyScrollBar = function (element, showScrollBar, scrollCallback) {
    $(element).jScrollPane({
        horizontalGutter: 5,
        verticalGutter: 5,
        'showArrows': false
    }).bind('jsp-scroll-y', scrollCallback);

    if (!showScrollBar) {
        $(element).find('.jspDrag').hide();
    }
}

回调从未被调用,我发现这是因为它未定义。如果我删除了Immediate object initialization();从函数创建之后一切正常。

任何人都能解释一下吗?我不明白为什么它被立即调用,所以我认为这是创建它的人的错误,我不知道为什么它会导致这个变量未定义?

1 个答案:

答案 0 :(得分:0)

它是undefined,因为函数(立即调用)不会return任何值

所以这似乎确实是图书馆的 bug ..


最后删除();,或者如果你想在那里调用它,只需在下一行中调用它

function initWall() {
     //callback from jqueryscrollpane
     Scroll_TimeLine_Instance = function (event, scrollPositionY, isAtTop, isAtBottom){     
         //get more content
         if (isAtBottom) {
             GetMoreDate(objid, vwrsid, secid, orgid, incflwr, qty, mintlid, maxtlid, successGetTimeLineCallback, failureGetTimeLineCallback);
         }
     }; /// this is assigning the function to our variable
     Scroll_TimeLine_Instance (); // this is the invokation
}