(function ($) {
$.fn.test = function () {
console.log('works');
};
})(jQuery);
$(document).ready(function () {
var var1 = $().test(); // works
var var1 = $.test(); // error: $.test is not a function
});
可以这样调用$.test()
吗?
答案 0 :(得分:3)
您可以轻松扩展jQuery
对象本身
(function ($) {
$.test = function () {
console.log('works');
};
})(jQuery);
但请注意,jQuery.fn
(等于jQuery.prototype
)无法使用此功能,因此您无法通过dom nodes
访问此处的this
,在其他jQuery插件函数之前或之后,你也不能链接该方法。
$().test()
工作的原因是,jQuery构造函数创建了一个链接到jQuery.fn
(prototype ..)的新对象。
答案 1 :(得分:2)
我认为这是因为jQuery对象实际上只是init
构造函数。意味着$
只表示jQuery对象的构造函数。因此,执行$()
会创建一个空的jQuery对象,然后您可以从中调用原型方法test()
。
要访问原型,您可以执行$.fn.test();