当我遇到这个时,我正在检查查询源代码:
3730 | jQuery.extend({
3731-3775| //code
3776 | });
然后就在那之后,我发现了这个:
3778| jQuery.fn.extend({
----| //code
----| })
这两个应该是相同的,因为在296
返回声明扩展函数的地方,我发现了这个:
296| jQuery.extend = jQuery.fn.extend = function() {
但是既然它们是相同的,为什么jQuery团队会突然从使用jQuery.extend()
切换到突然使用jQuery.fn.extend()
?
答案 0 :(得分:3)
$.extend
只是扩展了一个对象
var obj1 = {'name' : 'Progo'};
var obj2 = {'value' : 'stack overflow'};
$.extend(obj1, obj2);
// obj1 is now {'name' : 'Progo', 'value' : 'stack overflow'}
jQuery.fn.extend
扩展了jQuery原型
jQuery.fn.extend({
turn_red: function() {
return this.each(function() {
this.style.color = 'red'
});
}
});
// gives you
$('elements').turn_red(); // sets color to red
答案 1 :(得分:1)
关键区别在于:
// extend jQuery itself if only one argument is passed
if ( length === i ) {
target = this;
--i;
}
this
会有所不同,具体取决于是$.extend
还是$.fn.extend
。