jq插件的原理

  
  ;(function($){  
        $.fn.name=function(option){      
          //event   
        }  
    })(jQuery)  

在以往的博客中,我写了一个新手写插件,是的,就是按照上面的代码格式那样书写,你也可以写出一个小插件。那我们此次就是来剖析下为什么这样我们就能以

$(dom).name();

的形式使用插件了。

那么我开始纵观这样一个函数,这是个什么样的函数?

(function(){})()

那么已经入门的同学就知道这是个自执行函数形式,本质上是一个匿名函数然后执行的函数。那什么又叫做匿名函数自执行呢?比如

var fn=function(){console.log(2)};


那么如果我们去执行这个fn是这样执行的

a();

其实不就是相当于
(function(){console.log(2)})();

我们理清了这个思路,发现,原来插件就是一个自执行函数,那么这个自执行函数做了什么?

首先,他传入了一个jquery这个东西,那么jquery是什么?

那么我想问个问题,那就是你是不是在写插件的时候都会引入一个jq的链接?那jq的源码做了什么?

在jq源码中给window对象注册了jquery,就是

window.jquery=jquery=$;

所以jq是一个函数,那么我们传入这个函数之后,我们用内部$去接收,再来看这行

$.fn.name
在jq中的源码是这样定义的

$.fn=$.prototype

也就是说,fn是可以给这个函数添加原型方法的。是的,我们给了这个函数添加了原型的方法,也就是说,我们在执行插件之前,只要你引入了插件,那么你就已经为jquery添加了新的原型方法,只不过这个方法没有执行罢了。

那么你用

$(dom).name();
就是执行了这样的一个原型方法,方法内部将事件注册给了你的被jq封装好的dom对象。

啊,终于差不多要结束了。如果你觉得好可以给顶 啊,不好的,也可以说出来啊,‘虚心’接受建议!


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值