怎样轻松理解jquery的细节
学习、记忆、理解,应当不拘一格,采用一切手段去轻松记忆。最近在整理相关的jquery的学习内容。遇到了这个曾经迷惑过的内容,突然想到怎么巧记,写出来方便回顾。不一定很准确,但很容易记住。
$.each();相当于事先做好了一个对象,连名字都取好了,就像早就做好了window对象一样,调用的时候不需要再实例化,直接拿来调用即可。这样的好处是不但使用起来方便,而且易和别人沟通(别人看得懂了)。那么它相当于由顶级父类事先实例化了一个对象。
而下面的相当于是它的子类(DOM树中,不就是一棵倒立的对象集合吗?一个是另外一个的子对象,以此类比)又重写了该方法。那就当然$.each()可以有一套自己的使用规则,$(选择器).each()也可以有自己的使用规则了,同时,你如果写了$(选择器).each(),它就会覆盖继承过来的$.each();内容...
$('#mydiv').each();相当于通过调用$('#mydiv')返回一个子对象,该子对象调用一个each()方法。那么它知道自己是谁在调用了。也就不需要再传递处理对象了。而上述是父类对象在调用,未来在处理谁,还不知道呢。所以需要传递处理对象。
理解2:你也可以把$.each()看成一个类在调用静态方法,就像C++里的:Animal::set_name();这种。充其量就是js里的调用静态方法的方式不是“::”而也是“.”。而$('#mydiv').each();同样是上述的理解:通过$()的调用返回一个子对象,然后子对象调用each()方法。
静态方法通常是工具,因为不知道作用谁,所以需要传递一个“作用于谁”的参数,比如:一个数组,一个对象(里面有多个属性),然后传递处理函数。后者知道了是谁在调用,也就不需要传递了。
就像举个PHP例子来模拟:
each();//打印了Animal$b=newBird();$b->each();//虽然继承了each方法,但是自己又重写了,所以打印的是自己写的each(),也就打印了Bird
所以$.each()的用法自然是这样:
所以$('#myul li').each()的用法自然是这样:
如果二者的第2个参数代表的意义不一样,也是可以理解的,因为他们是不同的each()方法,当然可以不一样了。
把简单的东西说的深奥,那是故弄玄虚。把深奥的东西简单化,那才叫本事,才是一个讲师、过来人、前辈该干的事情。
提倡用一切手段去轻松理解,而且要融入你自己的故事和人生经历中,同时还要改的越来越好,越来越轻松记忆,这是一个无止境的事情,是值得深思的。