Skip to content

插件制作规范和this对象

Bill Zhang edited this page May 28, 2017 · 3 revisions

回到顶部插件里,我记录了一下jQuery插件制作的思路,这次制作tab切换插件又进一步学习了jQuery插件制作的规范格式,这里也记录整理一下。

插件制作规范格式

为避免$别名与其他库发生冲突和防止污染全局命名空间,要把封装插件的代码放在立即调用函数(IIFE)里,并且将jQuery对象作为参数传入,然后用$接收:

;(function($, window, document, undefined) {
    ......
})(jQuery, window, document);

上面的代码还将window/document等系统变量作为参数传递到插件内部,这样在需要访问这些系统变量的时候就可以访问这些参数,也就是访问局部变量,比访问全局变量速度更快,有少许性能提升。

几处this对象的运用

this引用的是函数执行环境对象,在编写这个插件时,我发现有几处函数里this对象需要注意:

  1. 在事件绑定回调函数中,在事件绑定回调函数中this对象指向被绑定事件的dom元素(在jQuery里是jQuery对象);
  2. 闭包里匿名函数中,闭包里内层的匿名函数的this对象指向全局对象,在浏览器环境下也就是window,因此要在匿名函数里访问外层函数的this对象就要把外层函数的this对象保存在一个闭包能够访问到的变量里;
  3. 间歇调用和超时调用,间歇调用和超时调用的回调函数里,this对象指向全局对象

用面向对象方式编写插件时,上面三种情况下,要访问外层构造函数或者原型对象的this对象,都要在外层把this赋值给that变量,然后在内层函数里通过that来访问外层的this对象。

Clone this wiki locally