Rumah > Soal Jawab > teks badan
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
PHP中文网2017-05-19 10:46:24
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,
const new_array = arr.map(panggilan balik[, thisArg])
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,
Jika fungsi ini dalam mod tidak ketat, nilai ini yang dinyatakan sebagai null dan undefined akan secara automatik menghala ke objek global (objek tetingkap dalam penyemak imbas), dan nilai ini akan menjadi nilai asal (nombor, rentetan, Nilai Boolean) Objek pembalut automatik yang akan menunjuk kepada nilai asal.
Ringkasnya, dalam satu ayat, untuk mensimulasikan sepenuhnya sifat fungsi peta~