-
Notifications
You must be signed in to change notification settings - Fork 1
插件制作规范和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对象指向被绑定事件的dom元素(在jQuery里是jQuery对象);
- 闭包里匿名函数中,闭包里内层的匿名函数的this对象指向全局对象,在浏览器环境下也就是window,因此要在匿名函数里访问外层函数的this对象就要把外层函数的this对象保存在一个闭包能够访问到的变量里;
- 间歇调用和超时调用,间歇调用和超时调用的回调函数里,this对象指向全局对象
用面向对象方式编写插件时,上面三种情况下,要访问外层构造函数或者原型对象的this对象,都要在外层把this赋值给that变量,然后在内层函数里通过that来访问外层的this对象。
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.