js函数的延迟加载实现代码

复制代码 代码如下:

  //非延迟加载的函数,每次调用都会进行条件判断

  function removeHandler(target,eventType,handler) {

  if(target.removeEventListener) {

  target.removeEventListener(eventType,handler,false);

  }else {

  target.detachEvent("on"+eventType,handler);

  }

  }

  //延迟加载的函数,第一次调用后,会覆盖原来的老函数,以后再次调用的是新函数,不会再进行条件的判断,提升效率

  function addHandler(target,eventType,handler) {

  if(target.addEventListener) {

  addHandler = function(target,eventType,handler){

  target.addEventListener(eventType,handler,false);

  }

  }else{

  addHandler = function(target,eventType,handler){

  target.attachEvent("on"+eventType,handler);

  }

  }

  addHandler(target,eventType,handler);

  }

  //条件预加载

  //条件预加载确保所有函数调用时间相同。其代价是在脚本加载时进行检测。预加载适用于一个函数马上就会被用到,而且在整个页面生命周期中经常使用的场合。

  var addEventHandler = document.body.addEventListener ? function(target,eventType,handler) {

  target.addEventListener(eventType,handler,false);

  } : function(target,eventType,handler) {

  target.attachEvent("on"+eventType,handler);

  }