call的复杂使用

涉及到原型链,闭包的概念了

by kixi

HTML

kixi.com.cn   <br>
清晰网         <Br>
从javascript开始   <br>

JavaScript

//这篇比较复杂,涉及“原型链”,“闭包”,“this",”作用域链“等的使用
//但我们关注call的使用
//注意 this 和 obj

//  Array扩展函数forEach        函数开始
Array.prototype.forEach = function(fn,thisObj){   
    
      //准备call的代入对象 本例中 obj=window
    var obj = thisObj || window;   
    
      //this=[2,5,8]这个数组实例
    for(var i=0,j=this.length; i<j; ++i){        
        
          //开始call了
        fn.call(obj,this[i],i,this);
    }
}


   //element=上面的this[i],要注意
function printElt(element,index,array){
    alert("["+index+"] is "+ element);
}


//因为是Array的扩展函数,所以数组直接使用forEach
[2,5,8].forEach(printElt);