在 ExtJS 3 到 4 的迁移过程中,我遇到了一个问题,我想知道是否有人解决了问题:即,如何扩展具有私有范围的单例?
在 Ext3 中,我会使用 Extend:
Ext.namespace("My.New.Obj");
My.New.Obj = (function() {
var privateVar = 3;
function privateFunc() { alert(privateVar); }
var extendedObj = Ext.extend(My.Other.Obj, {
newFunc: function() { alert(this.publicVar+privateVar); },
publicVar: 4
});
return new extendedObj();
})();
据我所知,我会使用 Ext.define 创建一个单例模式,但我不知道如何扩展内部对象。
Ext.define('My.New.Obj', function() {
var privateVar = 3;
function privateFunc() { alert(privateVar); }
var extendedObj = Ext.create('My.Old.Obj',{
newFunc: function() { alert(this.publicVar+privateVar); },
publicVar: 4
});
return extendedObj;
});
上面例子的唯一问题是我相信在 Ext.extend 中保留的超级方法被覆盖了。
如何在保持私有范围的同时扩展单例?