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
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,
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,
En bref, en une phrase, afin de simuler complètement les propriétés de la fonction map~
/q/10...