Jquery中的Jquery.extend, Jquery.fn.extend,Jquery.prototype

颛孙信厚
2023-12-01

Jquery中:

1. $是Jquery的简写形式,所以,Jquey()和$()的意思是一样的;所有用$()的地方,$都可以用Jquery代替;

2. 因为不能假定$在任何环境中都是有效的,所以,插件中一般用Jquery定义,而不用$定义;、

3. 用Jquery.extend增加的函数,或者说扩展的函数,可以理解成添加类方法——用类名调用

4. 用Jquery.fn.extend增加的函数,或者说扩展的函数,可以理解成添加对象方法,即添加成员函数,用对象名调用

5. Jquery.fn=Jquery.prototype,所以,Jquery.fn是Jquery.prototype的别名;

6. 那么Jquery.prototype是什么呢? 这个牵涉到Javascript的对象生成过程,以及结构:

    建立Javascript普通对象-》Javascript普通对象的constructor属性指向constructor对象,constructor对象的prototype属性指向

    prototype对象,Javascript普通对象的隐藏属性_proto_指向prototype对象,具体结果图可以参考

    http://yangsp1.javaeye.com/blog/499264

 

7. 以下代码:

    var $jc = $.jcarousel;//$有一个jcarousel属性,该属性也是一个对象(摘自Jcarousel插件),并起别名为$jc

     $jc.fn.extend = $jc.extend = $.extend;// $jc 的对象方法=$jc 的类方法=Jquery的类方法;

                                                                 // 即扩展方法可以使用上面3个方式调用,但意义不同。

8. 代码形式:

    (function($){.....})(Jquery)

    //用上面的函数形式作为包裹器,把代码包含在内部,含义是:

      function($){....}函数定义,有一个形式参数$;

      (function($){....})(Jquery)用Jquery作为实参调用上述函数

      用途:在该函数内部用$不会引起冲突,所以起到包裹器的作用。  

    

 类似资料: