怎么写js插件( 二 )


万一别的地方用到了Haorooms,那么你的代码就悲催了!现在我们把上面的代码包装起来,用一个自调用匿名函数(有时又叫块级作用域或者私有作用域)包裹,就不会出现这个问题了!包括js插件的开发,也是一样的,我们用一个自调用匿名函数把自己写的代码包裹起来,就可以了!包裹方法如下:(function(){})()用上面的这个包裹起来,就可以了 。但是还有一个问题,当我们研究大牛的代码的时候,前面经常看到有“;”,那是为了避免代码合并等不必要的错误 。
例如,我们随便定义一个函数:var haoroomsblog=function(){}(function(){ })()由于haoroomsblog这个函数后面没有加分号,导致代码出错,为了避免这类情况的发生,通常这么写!;(function(){ })()把你的插件代码包裹在上面里面,就是一个简单的插件了 。(注js插件和jquery插件都是如此)还有一个问题把你的插件包裹在;(function(){ })()基本上可以说是完美了 。
但是为了让你开发的插件应用更加广泛,兼容性更加好,还要考虑到用插件的人的一些特殊的做法,例如,有些朋友为了避免jquery和zeptojs冲突,将jquery的前缀“$”,修改为“jQuery”,还有些朋友将默认的document等方法修改 。为了让你的插件在这些东西修了了的情况下照常运行,那么我们的做法是,把代码包裹在如下里面:;(function($,window,document,undefined){ //我们的代码 。
})(jQuery,window,document);就可以避免上面的一些情况了!至此,你开发的插件就算完美了 。
6. javaScript插件写法 试下这个(function($){ $.fn.highly = function(options){ var _this = this; var _highly=$(_this).position().top; $(window).scroll(function(){ if ($(window).scrollTop()>=_highly){ $(_this).css({ "position":"fixed", "top":"38px" }); }else{ $('.index-hot').css({ "position":"static" }); } }})(jQuery); 。
7. js插件写法 除了jQuery以外的写法 1.vartemp={}是定义Object对象,Object包含很多键值对 。
这里面的b,bd,at都是键,对应了三个值,这个值可以是函数 。这是javascript的语言特性,如果你看jquery的源代码的话,会发现其中很多地方都是用这个实现的 。
包括JSON对象,实质上也是Object 。2.关键一点就是button在执行你为它绑定的函数的时候,this指的是自己 。
第一次点击的时候你用的是temp.bd(),那么就通过temp这个对象调用bd函数,中间有temp这个中间层,那么bd函数的this指的是temp,点击完了以后你将b1绑定了a.at这个函数,注意,你直接把这个函数绑到了button的click事件上,下回它调用的时候会直接用这个函数,而不是类似于第一次的temp.at(),那么这时候没有temp这个中间层,这里的this指的的button这个对象(不是jquery对象,而是butto这个dom对象),它没有b这个属性,所以就报错了 。P.S.这里有个写法,你替换掉就会发现那两个方法又有效了bd:function(){vara=this;a.b.bind("click",function(){a.at.call(temp);});},这里用了call这个javascript的语言特性,把at这个函数运行时的this指针强制设为temp,就没有问题了 。
【怎么写js插件】

怎么写js插件

文章插图