重返jQuery(2)-四个对象-jquery基础教程 第四版
2016-11-26 本文已影响45人
smartphp
聚焦在几个对象用法。
-
js自身的对象
,js传说是一切皆对象,尽管有专家说也不全是。我们这里不吹毛求疵。这里的js对象指的是全局的window对象,是不是还有其他的对象我不太清楚。常用的方法是定时器和几个视窗相关的方法。这里为什么要提出window对象和jquery对象呢。
js方法内部的this指的是函数运行时候的上下文。当运行setInterval()定时器的时候,这个函数运行的上下文是默认绑定在window对象上的,所以在setInterval()内部的this是指向window对象的,在setInterval内部要使用jquery对象需要用中间变量来避免使用this指代jquery对象。在jquery 基础教程的实例里面基本都还在函数头部用$variable=$("selector")来缓存jquery对象这样就形成了一个闭包,在定时器里面或者其他函数里面就可以使用这个变量。关于定时器的问题可以在阮一峰的博客里找到相关内容。在jquery基础教程第十章高级事件处理里面用到了几个window对象的属性。
2 jquery对象
,这没啥好说的,所有的元素经过$()包装以后都会成为 jquery对象,从而拥有了大量的属性和方法。但是其中涉及了很多的设计模式,如果是想进一步学习js编程,这个库是极好的。我看到两本有关js设计模式的书都涉及到了jquery的编程思路。还有jquery作者写的《javascript忍者秘籍》对这些思路也有讲解。学完收获肯定不少。
3Event事件对象
去年在写一个动态添加字段的表单的时候用过事件委托,但是感觉就是雾里看花,似乎明白了,但是有不明白,其实问题就出在Event对象和事件冒泡的理解上了。
事件委托的原理的,一个元素的子元素有很多,为每一个子元素手工添加事件处理方法将会很麻烦,遇到动态添加的元素就没辙了。解决办法是使用事件委托来处理。把事件处理方法绑定在父元素上,当某个特定的子元素触发某个事件以后,在冒泡到父元素的时候使用event对象来判断到底是哪个具体的元素触发了事件。到现在理解这个原理之后我有冲动彻底读懂jquery的源码。
//这就是事件委托的方法实例
//事件委托可以委托为document对象,但是这样的话冒泡的层级太深,
//影响效率,所以委托时尽量靠近子元素
$(document).ready(function() {
$('#switcher').click(function(event) { //父元素绑定的事件触发方法
if ($(event.target).is('button')) { //判断事件对象是否是具体的子元素
/*具体的事件处理方法*/
}
}
});
4 ajax对象
这个简化了ajax处理的方法,尽管ajax方法是由jquery包装的,但是ajax对象是完全独立于jquery对象的,所以在ajax对象的方法中使用jquery对象的时候也要注意this指代的对象是ajax对象而不是jquery对象。在这时看到var that=this的时候要知道为什么要这么做。
对于js对象编程学习和盲人摸象一样,别人告诉你是一头大象,你摸起来可能是一个扇子,或一条蛇。摸得多了,才慢慢像一头四不象里,再学习 大象才慢慢摸出来。对着四个对象的总结是我在摸索大象的过程中那个阶段呢?或许到最后发现他是个matrix.