Maison > Questions et réponses > le corps du texte
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中文网2017-05-19 10:46:24
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~