将变量局部化
作为一个库首要解决的问题就是防止影响全局的变量。自执行匿名函数可以很好的实现这一点。
传入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