所以我的印象是 jQuery.fn 是 jQuery.prototype 的快捷方式。但是插件不是 jQuery 对象的方法吗?为什么我想向原型(prototype)添加一个方法?向原型(prototype)添加方法是否不会将该方法提供给使用 jQuery 对象作为构造函数创建的对象(而不是向 jQuery 对象本身添加该方法)?
最佳答案
它甚至有点复杂(或者至少看起来是这样)。看看source code (jQuery 1.6.2) :
当你调用jQuery(选择器)
时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()
)创建的每个对象都具有对原型(prototype)的引用,过去或将来创建的每个对象都可以访问我们分配给 jQuery.fn
的每个方法。
希望这能消除您的困惑。如果没有,请询问:)
关于jquery - 为什么使用 jQuery.fn 添加插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6467841/