Dalam "The Definitive Guide to JavaScript" terdapat fungsi yang digunakan untuk melaksanakan 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;
};
Kenapa guna call(null)
而不是直接使用f(a[i], i, a)
? Dengan cara ini, ini semua menunjukkan keadaan keseluruhan
Anda boleh melihat bahawa peta yang dilaksanakan di sini adalah dalam bentuk ini, iaitu peta(array, f), yang hanya boleh dipanggil dengan dua parameter
.Mari kita lihat semula prototaip fungsi yang diberikan pada MDN,
panggilan balik ialah apa yang kita panggil f, jadi yang terakhir ini adalah pilihan, dan fungsi yang disediakan dalam buku tidak mengambil kira nilai ini sama sekali, maka apabila nilai ini tidak diluluskan, Jika parameter Arg ini ditinggalkan, atau nilainya ditetapkan Jika ia adalah batal atau tidak ditentukan, ini menunjukkan kepada objek global.
Selain itu, kita tahu bahawa apabila menggunakan kaedah panggilan objek fungsi,
Ringkasnya, dalam satu ayat, untuk mensimulasikan sepenuhnya sifat fungsi peta~
/q/10...