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);