each : function(array, fn, scope){
if(Ext.isEmpty(array, true)){
return;
}
if(!Ext.isIterable(array) || Ext.isPrimitive(array)){
array = [array];
}
for(var i = 0, len = array.length; i < len; i++){
if(fn.call(scope || array[i], array[i], i, array) === false){
return i;
};
}
}
分析主要部分
call 其实就Function.prototype.call
因为所有函数的构造器都是Function 显然函数就会拥有构造器原型的方法
call方法 fn.call(argthis,arg1,arg2,arg3...);
会调用fn方法,此时this的值等于argthis,参数列表为arg1,arg2...
因此这个方法的含义就是循环array,并调用fn,每次循环时方法里面的this等于scope || array[i],并把array[i], array[i], i, array作为参数传到fn里
var f = function(v){document.write("this="+this+","+arguments[0]+"\n")};
var arr = [1,2,3];
for(var i =0;i<arr.length;i++){
f.call(arr[i],arr[i],i,arr);
}
结果为this=1,1 this=2,2 this=3,3
if(Ext.isEmpty(array, true)){
return;
}
if(!Ext.isIterable(array) || Ext.isPrimitive(array)){
array = [array];
}
for(var i = 0, len = array.length; i < len; i++){
if(fn.call(scope || array[i], array[i], i, array) === false){
return i;
};
}
}
分析主要部分
call 其实就Function.prototype.call
因为所有函数的构造器都是Function 显然函数就会拥有构造器原型的方法
call方法 fn.call(argthis,arg1,arg2,arg3...);
会调用fn方法,此时this的值等于argthis,参数列表为arg1,arg2...
因此这个方法的含义就是循环array,并调用fn,每次循环时方法里面的this等于scope || array[i],并把array[i], array[i], i, array作为参数传到fn里
var f = function(v){document.write("this="+this+","+arguments[0]+"\n")};
var arr = [1,2,3];
for(var i =0;i<arr.length;i++){
f.call(arr[i],arr[i],i,arr);
}
结果为this=1,1 this=2,2 this=3,3