Rumah >hujung hadapan web >tutorial js >Ringkasan Function.prototype.apply() dan Function.prototype.call()_Pengetahuan asas
Saya selalu melupakan penggunaan dua perkara ini dan menuliskannya untuk rekod.
Fungsi mereka adalah sama, tetapi parameter yang dihantar adalah berbeza
mohon
terapkan menerima dua parameter Yang pertama menentukan penuding kepada objek ini dalam badan fungsi Parameter kedua ialah koleksi berlangganan (objek boleh dilalui Kaedah penggunaan menghantar elemen dalam koleksi ini sebagai parameter kepada objek. Fungsi dipanggil:
var func = function(a, c, c){ alert([a,b,c]); //[1,2,3] } func.apply(null, [1,2,3]);
panggil
Parameter yang diluluskan dalam panggilan tidak tetap Sama seperti yang digunakan, parameter pertama juga mewakili penunjuk ini dalam badan fungsi Bermula dari parameter kedua, setiap parameter dihantar ke dalam fungsi secara bergilir-gilir:
var func = function(a, b, c){ alert([a,b,c]); //[1,2,3] } func.call(null, 1,2,3);
panggilan ialah gula sintaksis untuk aply. Jika parameter pertama adalah nol, ini dalam badan fungsi menghala ke objek hos, iaitu tetingkap dalam penyemak imbas.
Tujuan memanggil dan memohon
1. Tukar ini untuk menunjuk kepada
Itu contoh di atas
2.Fungsi.prototaip.ikat
Fungsi Mock.prototype.bind
Function.prototype.bind = function(context){ var self = this; return function(){ return self.apply(context, arguments); } }; var obj = { name: 'cxs' }; var func = function(){ alert(this.name); //cxs }.bind(obj); fun();