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