您当前的位置:首页 > 网站建设笔记 >

javascript闭包的七种用法

0

一、在每个a元素上创建属性i来保存当前i的值

var one=document.getElementById("one").getElementsByTagName("a");
for(var i=0;i<one.length;i++){
  one[i].i=i;
  one[i].onclick=function(eventObject){
  LS.preventDefault(eventObject);
  LS.log.write(this.i);
  }
}

二、将变量i保存在匿名函数自身

var two=document.getElementById("two").getElementsByTagName("a");
for(var i=0;i<two.length;i++){
  (two[i].onclick=function(eventObject){
  LS.preventDefault(eventObject);
  LS.log.write(arguments.callee.i);
  }).i=i;
}

三、加一层闭包,i以函数参数形式传递给内层函数

var three=document.getElementById("three").getElementsByTagName("a");
for(var i=0;i<three.length;i++){
  (function(arg){
  three[i].onclick=function(eventObject){
    LS.preventDefault(eventObject);
    LS.log.write(arg);
  }
  })(i);
}

四、加一层闭包,i以局部变量形式传递给内层函数

var four=document.getElementById("four").getElementsByTagName("a");
for(var i=0;i<four.length;i++){
  (function(){
  var temp=i;
  four[i].onclick=function(eventObject){
    LS.preventDefault(eventObject);
    LS.log.write(temp);
  }
  })();
}

五、加一层闭包,返回一个函数作为响应事件

var five=document.getElementById("five").getElementsByTagName("a");
for(var i=0;i<five.length;i++){
  five[i].onclick=function(arg){
  return function(eventObject){
    LS.preventDefault(eventObject);
    LS.log.write(arg);
  }
  }(i);
}

六、new一次就产生一个函数实例

var six=document.getElementById("six").getElementsByTagName("a");
for(var i=0;i<six.length;i++){
  six[i].onclick=new Function("LS.log.write("+i+");LS.preventDefault(arguments[0]);");
}

七、

var seven=document.getElementById("seven").getElementsByTagName("a");
for(var i=0;i<seven.length;i++){
  seven[i].onclick=Function("LS.log.write("+i+");LS.preventDefault(arguments[0]);");
}

建站咨询

咨询热线

微信交流

返回顶部