0

サードパーティのページ開発者がページに挿入できる「ウィジェット」と呼ばれるオブジェクトコンストラクターがあるとします。たとえば、ツールチップのようなものである可能性があります。

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

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

        //more code...
    }
}

このウィジェットが表示されたら、表示されている他のウィジェットを非表示にします。「show」メソッドが「this.isShowing」がtrueであるウィジェットの他のインスタンスまたはウィジェットのすべてのインスタンスで「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 に答える