今天,关于jQuery的唯一紧迫问题是关于何时使用jQuery.extend()
和jQuery.fn
(用于插件)。 Basil Goldman似乎在“Defining your own functions in jQuery”中有一个解释,但由于某种原因,我仍然不满意我有最好的信息。一旦我们开始使用jQuery.fn
,我们必须考虑是否应该构建一个完整的插件。这意味着三个问题:扩展,添加新功能和构建插件。应该有一个解释,这三个都是一致的。这值得解释,我们有吗?
答案 0 :(得分:7)
我想你可能会想得太辛苦了。 :)
在jQuery源代码中 - extend()定义一次并在两个名称空间中使用:
jQuery.extend = jQuery.fn.extend = function() { .. };
从技术上讲,所有这个功能都是将对象属性合并在一起。
因此,在最基本的用例中,您只需将两个对象合并为一个对象(非常类似于插件中的选项参数):
this.options = $.extend({}, defaultOptions, userOptions); // Just mergin' objects
plain-jane $ || jQuery命名空间上的extend函数只是将该函数添加为jquery命名空间中的类似静态函数。 jQuery命名空间上的函数通常是不需要元素操作的函数。这些函数类似于isArray()和isFunction()以及更多函数。
var noWhiteSpace = $.trim(string); // No element needed
jQuery.fn或多或少保留给基于传递给jquery对象的元素执行操作的函数。这些就像普通的插件,以及你在jQuery中习惯使用的大部分内容。
$('div').css('border', '1px solid green'); // Do work on a set of elements
更有趣的是,如果你看一下jQuery源代码中的$ .data()函数。它在两个名称空间中定义。它首先在$ namespace中定义,take和element作为第一个参数。它稍后扩展到$ .fn并简单地调用第一个函数,第一个参数设置为'this。'。
希望这就是你要找的东西!