2012-02-04 81 views
0

私有函數我不知道我正確的,但無論如何措辭我的問題裹父類的方法...如何調用方法時我在javascript

我使用iscroll和包裹iScroll初始化呼叫一個私人功能供我以後使用。這就是我:

Namespace.iscroll = function() { 
     var myScroll; 
     myScroll = new iScroll('mainContent-wrap', { 
      hScrollbar: false 
     }); 

    document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false); 
    document.addEventListener('DOMContentLoaded', Namespace.iscroll, false); 
}; 

我通過打電話iscroll我需要的任何頁面上Namespace.iscroll();

我的問題是,現在我想用myScroll.refresh();,或使用setTimeout功能刷新iScroll作爲descriobed iScroll文檔。

由於我在一個私有函數中封裝了原始的init調用,我如何運行刷新和其他方法(如銷燬)呢?

回答

1

如果您在運行iscroll函數後嘗試訪問myScroll變量,則答案是不行。這一點已經消失了。你將不得不把它保存在其他地方,以便你可以到達它。一個想法是把它同一個對象作爲iscroll這樣的:

Namespace.iscroll = function() { 
    Namespace.myScroll = new iScroll('mainContent-wrap', { 
     hScrollbar: false 
    }); 

    document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false); 
    document.addEventListener('DOMContentLoaded', Pelau.iscroll, false); 
}; 

然後,您可以做這樣的refesh:

Namespace.myScroll.refresh(); 

的關鍵是,你存儲myScroll在一些持久和公共位置不是臨時的局部變量。