$.extend和$.fn.extend的本质区别

要搞懂这其中的奥秘

我们需要模拟jQuery的实现

var Diskroom = function(){
    
}
Diskroom.extend = Diskroom.prototype.extend = function(){
   console.log(this); //当只有一个参数的时候 this就成了target
}
Diskroom.extend();
Diskroom.prototype.extend();
回的结果分别为

function()

Object{extend=function(){}}

看到没有

前面是函数 后面是对象

也就是说$.函数名 是直接把函数挂载在jQuery函数体上 这在代码中直接反映便是$.函数名 不需要实例化便可访问 即使实例化反而访问不到

而$.fn.extend函数 是把函数挂载在jQuery对象上 这在代码中的直接表现就是$(dom).函数名 也就是说必须实例化jQuery对象之后才能调用

附:jQuery.extend 和jQuery.fn.extend 引用的是同一个函数体 关于它们的解释可以参看另一篇博文

$.extend函数分析

你可能感兴趣的:($.extend和$.fn.extend的本质区别)