window._ = {
VARSION:"0.1.0",
each:function(obj,iterator,context){
var index = 0;
try{
if(obj.forEach){
obj.forEach(iterator,context);
}else if(obj.length){
for( var i= 0; i<obj.length; i++){
iterator.call(context,obj[i],i);
}
}else if(obj.each){
obj.each(function(value){
iterator.call(context,value,index++)
});
}else{
var i = 0;
for(var key in obj){
var value = obj[key],
pair = [key,value];
pair.key = key;
pair.value = value;
iterator.call(context,pair,i++);
}
}
}catch(e){
console.log(e)
// if(e != "__break__") throw e;
}
return obj;
}
}
var arr = {
a:5,
b:6,
c:4
}
_.each(arr,function(a,b){
console.log(a)
console.log(b)
})
Img tidak boleh dimuat naik kerana kelajuan rangkaian Maaf
Saya ingin tahu apa fungsi khusus panggilan itu dalam kod ini
Apakah proses pelaksanaannya?
Skop
call
是为了给你保证你提供了第三个参数的时候callback
tidak tercemar.Arahan pelaksanaan kod boleh debug
iterator.call(context...
sama dengan mengikat ini pada fungsi iterator sebagai konteks
Dalam
iterator.call()
,iterator
ialah fungsi traversal yang diluluskan. Dalam kes ini, ia merujuk kepada fungsi tanpa nama:iterator.call()
中,iterator
是传入的遍历函数,具体到本例中,就是指匿名函数:因此,call 指的是
Function.prototype.call
。具体参见Function.prototype.call() - JavaScript | MDNFunction.prototype.call
的签名格式是:thisArg 用来改变函数内部
Oleh itu, panggilan merujuk kepadathis
rrreeeFunction.prototype.call
. Untuk butiran, lihat Function.prototype.call() - JavaScript |. #🎜🎜#Format tandatanganFunction.prototype.call
ialah: #🎜🎜# rrreee #🎜🎜#thisArg digunakan untuk menukar pengikatan penunjukthis
di dalam fungsi. #🎜🎜#Persekitaran pelaksanaan untuk menentukan fungsi
panggilan menjadikan ini daripada fungsi yang ditentukan menghala ke objek yang sepadan.
Contoh di atas:
iterator.call(context,obj[i],i)//ini menunjukkan konteks, obj[i],i ialah parameter
Disarankan membacanya untuk memahami kod di atas http://www.liaoxuefeng.com/wi...