javascript - proses pelaksanaan panggilan js
迷茫
迷茫 2017-05-19 10:37:03
0
5
519
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?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

membalas semua(5)
習慣沉默

Skop

call 是为了给你保证你提供了第三个参数的时候 callback tidak tercemar.

_.each(arr, function (a, b) {
    console.log(this); //window
})

_.each(arr, function (a, b) {
    console.log(this); // arr
},arr)

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 是传入的遍历函数,具体到本例中,就是指匿名函数:

function(a, b) { console.log(a); console.log(b); }

因此,call 指的是 Function.prototype.call 。具体参见Function.prototype.call() - JavaScript | MDN

Function.prototype.call 的签名格式是:

func.call(thisArg, param1, param2, ...)

thisArg 用来改变函数内部 this rrreee

Oleh itu, panggilan merujuk kepada Function.prototype.call. Untuk butiran, lihat Function.prototype.call() - JavaScript |. #🎜🎜#Format tandatangan Function.prototype.call ialah: #🎜🎜# rrreee #🎜🎜#thisArg digunakan untuk menukar pengikatan penunjuk this 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...

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!