2012-02-04 83 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在一些持久和公共位置不是临时的局部变量。