我可以在javascript中调用由同一构造函数创建的其他对象上的方法吗?

时间:2013-02-08 22:09:13

标签: javascript oop object constructor

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

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

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

        //more code...
    }
}

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

1 个答案:

答案 0 :(得分:3)

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

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

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

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