2013-02-08 56 views
0

可以說我有一個對象的構造函數,第三方頁面開發人員可以在他們的頁面中插入,稱爲「小工具」。例如,它可能就像是一個工具提示。我可以在javascript中調用由相同構造函數創建的其他對象的方法嗎?

var Widget = function(settings, callbacks) { 
    this.hide = function() { 
     //some code... 
    }; 

    this.show = function() { 
     this.isShowing = true; 

     //more code... 
    } 
} 

當顯示此窗口小部件時,我想隱藏其他顯示的窗口小部件。 「show」方法是否可以在「this.isShowing」爲true的Widget的其他實例上或在Widget的所有實例上調用「hide」方法?

回答

3

你可以,但你需要保持對這些實例的引用。你可以保持它們在功能上本身的屬性:

var Widget = function(settings, callbacks) { 
    Widget.instances.push(this); 
    // More code 
}; 
Widget.instances = []; 

然後,只需訪問Widget.instances獲得所有創建的窗口小部件。

雖然(myWidget.destroy()或其他),您可能想要創建某種析構函數來從列表中刪除小部件,因爲如果實例化它們太多,可能會產生內存泄漏。

+1

工作示例:[click](http://jsfiddle.net/jJ7dh/1/) – MCL 2013-02-08 22:22:19

+0

@Renato:好的!我應該意識到這一點。在JavaScript中,一切都是一個對象,甚至構造函數都是可訪問的。 – Greg 2013-02-11 14:54:36

相關問題