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.settings(使用blackey2and blackeypw2)好像它们指向同一个对象,我正在寻找如何创建独立对象。

谢谢你的帮助!

4

1 回答 1

5

使用您当前的代码,将空settings对象添加到 的原型中Base,以便一个settings对象由 的所有实例Base和派生自Base(如Derived)的类的任何实例共享。相反,您应该做的是在's函数中创建空settings对象,以便每个实例都有自己的对象:Baseconstructorsettings

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 回答