3

を使用してExtJSで基本クラスと派生クラスをセットアップしようとしていますExt.extend

:基本クラス:

var Base = Ext.extend(Object, {
    settings: {},
    constructor: function(args) {
        var baseArgs = { 'user': '', 'password': '' };
        Ext.apply(this.settings, args, baseArgs);
    }
});

:派生クラス:

var Derived = Ext.extend(Base, {
    constructor: function(args) {
        Derived.superclass.constructor.call(this, args);
    }
});

:問題:

var test1 = new Derived({ 'user': 'blackey1', 'password': 'blackeypw1' });
var test2 = new Derived({ 'user': 'blackey2', 'password': 'blackeypw2' });

この時点では、同じオブジェクトを指しているかのように(と を使用)とtest1.settings同等です。独立したオブジェクトを作成する方法を探しています。test2.settingsblackey2blackeypw2

助けてくれてありがとう!

4

1 に答える 1

5

現在のコードでは、空のsettingsオブジェクトが のプロトタイプに追加されるBaseため、1 つのオブジェクトが のすべてのインスタンスと( など)から派生したクラスsettingsのすべてのインスタンスで共有されます。代わりにすべきことは、各インスタンスが独自のオブジェクトを取得できるように、の関数で空のオブジェクトを作成することです。BaseBaseDerivedsettingsBaseconstructorsettings

var Base = Ext.extend(Object, {
    constructor: function(args) {
        var baseArgs = { 'user': '', 'password': '' };
        this.settings = {};
        Ext.apply(this.settings, args, baseArgs);
    }
});
于 2012-06-14T05:05:39.580 に答える