addLoadEvent(func)详解

  今天在网上看到有人问addLoadEvent(func)这个函数的含义,当我第一次看到这个函数的时候也是无法理解,在网上或论坛里找到的都是一些笼统的解释,对于当时还是菜鸟的我来说真是天书一般,现在虽还不能讲出其中精髓,但我的理解应该可以帮像当年我一样的朋友们解答一下。

  首先,这个函数不是javascript内部的,好像是出自某个js框架,想知道详情的可以去google里百度一下。

  其次,我们最先知道的是它是调用函数用的,而你也许知道其他的调用方法,像window.onload只能调用一个函数,我的理解就是这种方法可以一次调用多个函数。看下源码吧:

代码
function addLoadEvent(func){
var oldonload = window.onload;
if (typeof window.onload != "function") {
window.onload = func;
}
else {
window.onload = function(){
oldonload();
func();
}
}
}

 

调用方法addLoadEvent(newFunc);

这里的newFunc就是你写的函数的函数名,就是下面了:

function addLoadEvent(newFunc){ //这当然是定义一个带有参数的函数了,函数名是addLoadEvent,把你函数作为参数传递。

var oldonload = window.onload; // 定义一个变量,把window.onload赋给oldonload,如果开始window.onload调用了A()函数,那么这里的oldonload就等于A();

if (typeof window.onload != "function") { 

window.onload = func;

}

else {

window.onload = function(){

oldonload();

func();

}

}

} 

//知道if,typeof,!=是什么意思下面就好理解了.

//先判断之前有没有通过window.onload调用函数,所以用typeof判断window.onload的类型.

//如没有调用,typeof window.onload != "function"返回的就是ture,执行window.onload = func;也就是window.onload会先调用你的函数newFunc();

//反之window.onload调用了函数,那么第一句的变量oldonload的值也就是被调用的函数A()了,判断window.onload调用了函数,typeof window.onload != "function"返回的就是false;执行window.onload = function(){oldonload();func();},那么window.onload调用的就是一个匿名函数,这个匿名函数就会先调用oldonload()函数(也就是A()函数),再调用你的newFunc()函数。 

  说了一堆好像有点乱,不知道能不能看明白,我是很希望能被看明白,如果有朋友看着有不对的地方请指出,不胜感激。

function addLoadEvent(func){
 var oldonload = window.onload;
 if (typeof window.onload != "function") {
 window.onload = func;
 }
 else {
 window.onload = function(){
oldonload();
func();
}
}
}function addLoadEvent(func){var oldonload = window.onload;if (typeof window.onload != "function") {window.onload = func;}else {window.onload = function(){oldonload();func();}}}

 

posted @ 2010-06-29 14:36  我是警察谁知道  阅读(4946)  评论(6编辑  收藏  举报