读书人

ExtJs源码分析与学习ExtJs元素Eleme

发布时间: 2012-10-11 10:16:10 作者: rapoo

ExtJs源码分析与学习—ExtJs元素Element(一)

????? 从这一节开始分析ExtJs对元素(Element)的封装与扩展,首先看Ext.lib.Dom

?

类Ext.lib.Dom

?

????? 该类源代码对应的文件为ext-base-dom.js。Ext.lib.Dom主要实现了对document中元素部分方法的兼容性实现。在前面事件(Ext.EventManager)的讲解中已经用到了该类。
????? 该类的实现采用了匿名闭包自执行函数实现,执行完该函数,把封装好的对象赋给了对象Ext.lib.Dom,实现了对该类的封装,这种实现的好处把不需要暴露的变量封装到闭包中,同时这些变量的作用域随Ext.lib.Dom自始自终,而不是调用后立马回收。援引别人写的一段话“严格意义上讲任何一个function在执行时就构成一个闭包,闭包的实质是作用域。普通的function,内部声明的变量在执行完会全被回收掉,这时闭包也被回收了,所以这种闭包对我们没有用处,他只是个作用域。如果一个function的局部变量在执行时被生命周期更长的变量引用,那么这个function执行完时就不能回收掉这个局部变量,这个局部变量的生命周期超出了他的作用域,这时的作用域也不能被回收掉,就形成了典型的闭包。闭包的作用就是使局部变量拥有更大的生命周期,甚至全局的生命周期,这使得闭包可以保存function执行时的状态,特别是那种function中又返回一个function时,被返回的function就可以访问父function执行时的所有局部变量(典型的带状态函数)。因为JS中回收一个变量不是看作用域是否结束,而是看引用数。”

?

????? 先看Ext.lib.Dom一些变量的声明

?

?接下来的方法是获取元素相对于文档的位置

?

?

?????? 接下来是设置元素的x和y坐标,这三个方法依赖于Ext.fly,Ext.fly实际上是Ext.Element.fly和el.translatePoints(xy)(修改元素的left属性值和top属性),接下来会讲解道这两个方法。

?

1 楼 tangjikey 2012-05-24 javascript contains和compareDocumentPosition 方法来确定是否HTML节点
上面文中的链接加错了,应该为
http://linder0209.iteye.com/blog/980826

读书人网 >JavaScript

热点推荐