cari

Rumah  >  Soal Jawab  >  teks badan

javascript - proses pelaksanaan panggilan js

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?

迷茫迷茫2810 hari yang lalu602

membalas semua(5)saya akan balas

  • 習慣沉默

    習慣沉默2017-05-19 10:39:03

    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

    balas
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-19 10:39:03

    iterator.call(context...
    sama dengan mengikat ini pada fungsi iterator sebagai konteks

    balas
    0
  • 漂亮男人

    漂亮男人2017-05-19 10:39:03

    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. #🎜🎜#

    balas
    0
  • 巴扎黑

    巴扎黑2017-05-19 10:39:03

    Persekitaran pelaksanaan untuk menentukan fungsi

    balas
    0
  • 阿神

    阿神2017-05-19 10:39:03

    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...

    balas
    0
  • Batalbalas