将变量局部化
作为一个库首要解决的问题就是防止影响全局的变量。自执行匿名函数可以很好的实现这一点。
传入window,undefiend是将全局变量改为局部变量,根据作用域链访问原理,访问更快一些,。undefined不传值实际就是传入undefined;
(function(window, undefined) { var jQuery = function() {} // ... window.jQuery = window.$ = jQuery; })(window);
无new实例化
function foo() { // 如果未使用new,重新调用。 if ( !(this instanceof arguments.callee) ) return new arguments.callee(); }
判断页面是否加载完成
document.onreadystatechange = subSomething;//当页面加载状态改变的时候执行这个方法. function subSomething() { if(document.readyState == “complete”) //当页面加载状态 alert(1) }
让出window.$控制权
//保存之前的$ var _$ = window.$; //假设定义变量$指向库jQuery window.$ = "I am jQuery"; //还原初始$状态 var noConflict = function() { window.$ = _$ } console.log($)//I am jQuery noConflict() console.log($)//undefiend