大家刚才也应该留意到Kit对于系统的Event对象做了一个mergeIf的操作,首先为什么要做megerIf,因为系统的Event的对象属性是Readonly的,不能覆盖,只能添加他没有的属性
所以Kit只能megerIf,我们都知道各个浏览器的事件对象Event Object存在一个不兼容性,所以就需要Kit去fix这些不兼容,比如IE没有target属性,只有srcElement,我们可以给他加上target属性,实现W3c标准的兼容
当然了,仅仅的修复是不能满足我们的需求的,很多时候,我们还需要给Event对象做一点小小的增肥
比如在iphone的touchdown,touchmove开发的时候,我们经常要取到单指的offset,而取单指的offset,又需要ev.targetTouches[0].clientX,这样的代码,但是一旦在匿名函数这样了,在PC上又不兼容了,
怎么办呢,没有关系,我们可以给Event Object mergeIf我们自己的属性
firstFingerClientX等等,这样我们就可以很简单的实现移动端,PC端开发的代码统一了。
包括,下一篇要说HTML5拖拽,高级手势事件都是基于这一基础之上架构的。
补充一下,为什么不像ExtJs那样new一个自己的Event,是因为
1. 系统原生的对象,有一定的继承关系,不想破坏
2. 如果用自己的new Object,可能会造成代码脱离框架之后,不可移植性,需要再次改变代码内容
您可能感兴趣的文章: