使用 ExtJS 扩展类时的私有成员
我在ExtJS论坛上做了一些关于扩展类内的私有方法和字段的研究,我不能找不到任何真正的答案。
当我说扩展类时,我的意思是这样的:
Ext.ux.MyExtendedClass = Ext.extend(Ext.util.Observable, {
publicVar1: 'Variable visible from outside this class',
constructor: function(config) { this.addEvents("fired"); this.listeners = config.listeners; }, // to show that I need to use the base class
publicMethod1: function() { return 'Method which can be called form everywhere'; },
publicMethod2: function() { return this.publicMethod1() + ' and ' + this.publicVar1; } // to show how to access the members from inside another member
});
这里的问题是一切都是公共的。那么,如何在MyExtendedClass范围内添加一个不能从外部访问但可以通过公共方法访问的新变量o方法呢?
I have done some research on the ExtJS forum regarding private methods and fields inside a extended class, and I couldn't find any real answer to this.
And when I say an extended class I mean something like this:
Ext.ux.MyExtendedClass = Ext.extend(Ext.util.Observable, {
publicVar1: 'Variable visible from outside this class',
constructor: function(config) { this.addEvents("fired"); this.listeners = config.listeners; }, // to show that I need to use the base class
publicMethod1: function() { return 'Method which can be called form everywhere'; },
publicMethod2: function() { return this.publicMethod1() + ' and ' + this.publicVar1; } // to show how to access the members from inside another member
});
The problem here is that everything is public. So, how do I add a new variable o method within the scope of MyExtendedClass that cannot be accessed from outside but can be access by the public methods?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
以下示例显示了上层方式定义特权私有和私有公共成员。但它还展示了如何定义私有静态成员(也称为类成员)和公共非特权成员。使用最后两个而不是特权的,我们将减少初始化时间,因为每次创建类的新对象时都不会解析它们:
The following example shows the Upper Stage way to define privileged private & public members. But it also shows how to define private static members (also called class members), and public non-privileged members. Using these last 2 instead of the privileged ones, we will reduce initialization time as they are not parsed every time you create a new object of your class:
我使用类似下面的东西。
I use something like the following.
@Protron:你的回答太棒了!谢谢!
我更进一步,创建了我自己的类扩展方法。
这样我们就可以节省一些额外的“()”,并且我们可以免费调用“Ext.reg”。
[]s
@Protron: Your answer is awesome! Thanks!
I went a little bit further and created my own class extender method.
This way we can save some extra "()", and we have the "Ext.reg" called for free.
[]s