gpt4 book ai didi

javascript - 在 Ext 4 中使用私有(private)范围扩展单例?

转载 作者:行者123 更新时间:2023-12-02 19:21:24 25 4
gpt4 key购买 nike

在 ExtJS 3 到 4 迁移的过程中,我遇到了一个障碍,我想知道是否有人已经解决了:即,如何扩展具有私有(private)范围的单例?

在 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 中保留的 super 方法会被覆盖。

如何在保持私有(private)范围的同时扩展单例?

最佳答案

Ext.define('A', {
someMethod: function(){
return 'a';
}
});

Ext.define('B', (function(){
var fn = function(){
return 'b';
};

return {
extend: 'A',

someMethod: function(){
return this.callParent() + fn();
}
}
})());

console.log(new A().someMethod());
console.log(new B().someMethod());

关于javascript - 在 Ext 4 中使用私有(private)范围扩展单例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12502519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com