javascript - question d'appel
PHP中文网
PHP中文网 2017-05-19 10:44:24
0
2
700

Dans "Le guide définitif de JavaScript" il y a une fonction utilisée pour implémenter Array.prototype.map :

var map = function(a,f){
    var results = [];
    for(var i = 0,l = a.length; i<l; i++){
        if(i in a){
            results[i] = f.call(null,a[i],i,a);//这里
        }
    }
    return results;
};

Pourquoi utiliser call(null)而不是直接使用f(a[i], i, a) ? De cette façon, tout cela indique la situation globale

PHP中文网
PHP中文网

认证高级PHP讲师

répondre à tous(2)
洪涛

Vous pouvez voir que la map implémentée ici se présente sous cette forme, c'est-à-dire map(array, f), qui ne peut être appelée qu'avec deux paramètres
Regardons à nouveau le prototype de fonction donné sur MDN,

.

const new_array = arr.map(callback[, thisArg])

callback est ce que nous appelons f, donc le dernier thisArg est facultatif, et la fonction fournie dans le livre ne prend pas du tout en compte cette valeur, alors lorsque cette valeur n'est pas transmise, Si le paramètre thisArg est omis, ou si la valeur est assigné S'il est nul ou indéfini, cela pointe vers l'objet global.
De plus, nous savons que lors de l'utilisation de la méthode d'appel d'objet fonction,

Si cette fonction est en mode non strict, la valeur this spécifiée comme nulle et indéfinie pointera automatiquement vers l'objet global (objet fenêtre dans le navigateur), et la valeur de celui-ci sera la valeur d'origine (nombre, chaîne, Valeur booléenne) Un objet wrapper automatique qui pointera vers la valeur d'origine.

En bref, en une phrase, afin de simuler complètement les propriétés de la fonction map~

滿天的星座

/q/10...

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!