0

ExtJS 4.1 でシングルトン クラスからコンストラクタをオーバーライドするのに苦労しています。オーバーライドを定義しましたが、オーバーライド ステートメントが処理されるまでに、コンストラクターは既に実行されています。

Ext.define('singleton', {
    singleton: true,

    constructor: function() {
        alert('replace me');
    }
});
4

2 に答える 2

-1

シングルトンクラスをオーバーライドすることはできません。これは本当ですが、シングルトン インスタンスをオーバーライドすることはできます。

Ext.define('singleton', {
    singleton: true,

    constructor: function() {
        // does whatever
    }
});

Ext.define('singletonOverride', {
    override: 'singleton',

    // adding new property
    foo: 'bar',

    // adding new method
    baz: function() {},

    initSingletonOverride: function() {
        // do whatever is needed
        // to augment the singleton
        // behavior the way you want
    }
},
function() {
    // `this` is the singleton instance
    this.initSingletonOverride();
});

この綿毛はすべて JavaScript オブジェクトに帰着することに注意してください。クラスはオブジェクトであり、クラス インスタンスは別のオブジェクトです。どちらか、または両方をオーバーライドできます。クラスシステムは、あなたがをしているかを見失わないようにするためにあります。

于 2013-08-16T18:43:39.763 に答える