所以我认为jQuery.fn是jQuery.prototype的快捷方式。但是jQuery 对象的方法不是插件吗?为什么我要为原型添加方法?不会向原型添加方法将方法赋予使用jQuery对象作为构造函数创建的对象(而不是将方法添加到jQuery对象本身)?
答案 0 :(得分:9)
它甚至有点复杂(或者至少看起来如此)。看看source code (jQuery 1.6.2):
致电jQuery(selector)
you are actually calling
return new jQuery.fn.init( selector, context, rootjQuery );
In addition we have jQuery.fn.init.prototype = jQuery.fn
。
因此,通过扩展jQuery.fn
,我们也会扩展jQuery.fn.init.prototype
。
我们使用new jQuery.fn.init
创建的每个对象(通过调用jQuery()
)都有一个引用到原型,过去或将来创建的每个对象都可以访问我们分配给jQuery.fn
的每个方法。
我希望这可以解决你的困惑。如果没有,请问:)
答案 1 :(得分:-4)
jQuery在Plugins/Authoring上有关于此的文档。
在jQuery插件中添加新插件有两种不同的方法:
(function( $ ){
$.fn.myPlugin = function() {
// Do your awesome plugin stuff here
};
})( jQuery );
(function($))
比使用下面的$
更安全,因为使用除jQuery.fn.myPlugin = function() {
// Do your awesome plugin stuff here
};
之外的其他内容进行覆盖可能导致插件无效。
{{1}}