javascript - Processus d'exécution des appels js
迷茫
迷茫 2017-05-19 10:37:03
0
5
571
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)
})

Impossible de télécharger l'image en raison de la vitesse du réseau. Désolé
Je veux savoir quelle est la fonction spécifique de cet appel dans ce code
Quel est le processus d'exécution ? Merci à tous

迷茫
迷茫

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

répondre à tous(5)
習慣沉默

Le périmètre de

call 是为了给你保证你提供了第三个参数的时候 callback n'est pas pollué.

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

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

L'ordre d'exécution du code peut être debug

伊谢尔伦

iterator.call(context...
équivaut à lier ceci à la fonction itérateur en tant que contexte

漂亮男人

Dans iterator.call(), iterator est la fonction de parcours transmise. Dans ce cas, elle fait référence à la fonction anonyme : 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

Par conséquent, call fait référence à Function.prototype.call. Pour plus de détails, voir Function.prototype.call() - JavaScript MDN🎜 Le format de signature de 🎜Function.prototype.call est : 🎜 rrreee 🎜thisArg est utilisé pour modifier la liaison du pointeur this à l'intérieur de la fonction. 🎜
巴扎黑

Utilisé pour spécifier l'environnement d'exécution de la fonction

阿神

call fait pointer la fonction spécifiée vers l'objet correspondant.
L'exemple ci-dessus :
iterator.call(context,obj[i],i)//cela pointe vers le contexte, obj[i],i est le paramètre

Il est recommandé de le lire pour comprendre le code ci-dessus http://www.liaoxuefeng.com/wi...

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal