ExtJS学习笔记(一):ExtJS程序的结构及如何定义js的private, public属性、方法
来源:互联网 发布:pscc2017语言包mac 编辑:程序博客网 时间:2024/05/02 01:34
一般编写一个ExtJS程序需要包含下面四个类型的文件:
1、html文件,引入样式表,js文件,并标明html元素;
2、html同名js文件,用来创建组件,并动态替换DOM中的元素;
3、组件js文件
4、组件对应的css文件
对于html同名的js, Ext推荐的写法是这样的:
- Ext.namespace('ux');
- ux.app = function(){
- //private properties
- //private methods
- //public area
- return {
- someProperty : 'propValues',
- init : function(){
- ......
- }
- }
- }();
在html文件中会执行下面代码。
- Ext.onReady(ux.app.init, ux.app)
上面的写法,初看上去是比较怪异的,不过认真分析一下,还是可以看出一些门道。
从 ux.app = function(){...} 可以看出,这时app是一个函数,但是,注意在最后还加了一个"()",一个函数名加上"()"的含义不就是执行这个函数吗?因此,上面的ux.app的值就是定义函数的返回值,根据定义,是一个匿名对象。
而在函数定义中看到了return {....},因此,ux.app实际的值就是那个返回的对象。故而我们可以用另外一种方法来定义,达到相同的效果。
- Ext.namespace('ux');
- ux.app = {
- someProperty : 'propValues',
- init : function(){
- ......
- }
- };
应该后者更容易理解一些,但是为什么ExtJS还推荐用上面的写法呢?
个人觉得是因为第一种方法提供了私有属性、私有方法的定义方式。
在第一种方式中,注释部分定义的属性、方法,可以被return回的对象所引用,但是ux.app之外却不能再引用这些属性和方法,因此就相当于私有的,而后者就没有这个特性。
记得在看一个dojochina上关于Ext的一个视频时,主讲也提到了javascript中private, public的区分问题,按照他的观点是:区分完全取决于程序员的自觉,因为两者实质上是一样的。
当时就觉得怪怪的,不可能这么弱智,估计就是在这个问题上没有弄清楚。(也可能是我没有搞清楚,欢迎拍砖)
-------------------------
后来发现一篇文章,介绍的比较清楚:
http://www.dustindiaz.com/javascript-private-public-privileged/
除了上面说的关于private, public的区分之外,确实还有一种标明private的方式,那就是在实现继承时:
- Ext.extend(child, parent, {
- methodA : ...,
- methodB : ...,
- methodC :....
- });
如果methodA是在parent中定义的,那么methodA就是public的,如果methodB在parent中没有定义,这里只是为了辅助实现methodA的逻辑而定义的方法,显然就是private的。(注意:此时从外面也可以调用methodB,但是没有任何意义,而且可能会出错。这可能才是那位讲师的本意。)
- ExtJS学习笔记(一):ExtJS程序的结构及如何定义js的private, public属性、方法
- Extjs 的MVVM结构学习笔记
- ExtJS学习笔记(一)运用region属性布局遇到的问题
- js 类的private public属性
- [ExtJS学习笔记]第六节 Extjs的类系统Class System命名规则及定义和调试
- ExtJS学习笔记:定义extjs类
- 《extjs 学习笔记一》
- ExtJS学习笔记一
- ExtJS学习笔记(一)
- ExtJs学习笔记一
- 别人博客转的 学习EXTJS框架并完成EXTJS+SSH2+JSON实现树形结构(一)
- 【学习笔记】Java中的private、protected、public和default的区别(一)
- Extjs日期的定义及使用
- 透析Extjs的Ext.js源码(一)对象属性的添加和设置
- ExtJs学习笔记(XTemplate的使用)
- js静态 public private 属性与方法
- ExtJS Button的事件和方法定义
- ExtJS Button的事件和方法定义
- 匿名类
- [转贴] Windows编程和面向对象技术 chap3
- 变量的自动初始化
- 如何为datagridview增加序号列
- 使用SharpPcap发送虚假构造的伪IP的UDP数据包
- ExtJS学习笔记(一):ExtJS程序的结构及如何定义js的private, public属性、方法
- 有意思的图片
- Java SE 6 Beta 2 (Mustang) 有什么新东西? 有什么值得开发者关注?
- 用于JavaScript的登陆验证源码
- VC6.0调用excel xp,word 2k
- 简单的Cookie子键获取
- 俄罗斯方块(纯JavaScript)
- JBPM 4.0.0 第一个版本 Alpha1发布了
- ext下拉列表