Rumah >hujung hadapan web >tutorial js >Ringkasan Function.prototype.apply() dan Function.prototype.call()_Pengetahuan asas

Ringkasan Function.prototype.apply() dan Function.prototype.call()_Pengetahuan asas

WBOY
WBOYasal
2016-05-16 15:03:311676semak imbas

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();

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn