Jquery中的Jquery.extend, Jquery.fn.extend,Jquery.prototype
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作为实参调用上述函数
用途:在该函数内部用$不会引起冲突,所以起到包裹器的作用