0

假设我有一个第三方页面开发人员可以在他们的页面中插入的对象构造函数,称为“Widget”。例如,它可能是类似于工具提示的东西。

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

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

        //more code...
    }
}

当显示此小部件时,我想隐藏任何其他显示的小部件。有没有办法“show”方法可以在“this.isShowing”为真的 Widget 的其他实例或 Widget 的所有实例上调用“hide”方法?

4

1 回答 1

3

您可以,但您需要维护对这些实例的引用。您可以在函数本身的属性上维护它们:

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

然后,只需访问Widget.instances以获取创建的所有小部件。

您可能想要创建某种析构函数来从列表中删除一个小部件(myWidget.destroy()或其他东西),因为如果您实例化太多小部件,这可能会产生内存泄漏。

于 2013-02-08T22:14:50.300 回答