Rumah > hujung hadapan web > tutorial js > Analisis mendalam tentang memohon, memanggil dan mengikat dalam kemahiran JS_javascript

Analisis mendalam tentang memohon, memanggil dan mengikat dalam kemahiran JS_javascript

WBOY
Lepaskan: 2016-05-16 15:06:32
asal
1610 orang telah melayarinya

Dalam Javascript, Function ialah objek. Penunjuk ini dalam objek Fungsi bergantung pada cara fungsi dipanggil. Menggunakan apply, call dan bind semuanya boleh menukar penunjuk ini dalam objek fungsi Sebelum bercakap tentang perbezaan, mari kita ringkaskan persamaan antara ketiga-tiga:
1. Semuanya digunakan untuk menukar titik objek fungsi ini.
2. Parameter pertama ialah objek yang dituju.
3. Anda boleh menggunakan parameter seterusnya untuk lulus parameter.

kaedah panggilan:

Sintaks: panggil([thisObj[,arg1[, arg2[, [,.argN]]]]])
Definisi: Panggil kaedah objek untuk menggantikan objek semasa dengan objek lain.
Penerangan: Kaedah panggilan boleh digunakan untuk memanggil kaedah dan bukannya objek lain. Kaedah panggilan menukar konteks objek fungsi daripada konteks awal kepada objek baharu yang ditentukan oleh thisObj.
Jika parameter thisObj tidak disediakan, objek Global digunakan sebagai thisObj.

mohon:

Sintaks: gunakan(thisObj, parameter tatasusunan)
Definisi: Gunakan kaedah objek dan gantikan objek semasa dengan objek lain
Nota: Jika parameter bukan jenis tatasusunan, TypeError akan dilaporkan.

ikat:

Kaedah yang dipanggil bind telah dilanjutkan dalam EcmaScript5 (tidak disokong oleh IE6, 7, dan 8 adalah sangat serupa dengan panggilan, contohnya, parameter yang boleh diterima dibahagikan kepada dua bahagian, dan parameter pertama digunakan sebagai). pelaksanaan Objek ini dalam konteks fungsi. Terdapat dua perbezaan:
①Nilai pulangan bind ialah fungsi ②Penggunaan parameter seterusnya juga berbeza;

Lihat contoh 1 dahulu:

function add(a, b) {
  alert(a + b);
}
function sub(a, b) {
  alert(a - b);
}
Salin selepas log masuk
Untuk panggilan, anda boleh menggunakannya seperti ini:

add.call(sub,3,1);Hasilnya ialah 4

Untuk memohon, anda boleh menggunakannya seperti ini

add.apply(sub,[3,1]);Hasilnya ialah 4

Untuk bind, anda boleh menggunakannya seperti ini:

add.bind(sub)(3,1); hasilnya ialah 4

Anda boleh melihat bahawa hasil output adalah sama, tetapi penggunaan parameter lulus adalah berbeza;
Lihat Contoh 2:

function jone(name,age,work){
  this.name=name;
  this.age=age;
  this.work=work;
  this.say=function(msg){
    alert(msg+",我叫"+this.name+",我今年"+this.age+"岁,我是"+this.work)
  }
}
var jack={
  name:"jack",
  age:'24',
  work:"学生"
}
var pet=new jone();

pet.say.apply(jack,["欢迎您"])
console.log(this.name)
Salin selepas log masuk
Untuk panggilan, anda memerlukan ini:
pet.say.call(jack,"Selamat Datang!")


Untuk memohon, anda memerlukan ini:
pet.say.apply(jack,["Selamat Datang!"])

Untuk mengikat, anda memerlukan ini:
pet.say.bind(jack,"Selamat Datang")()

Pada masa ini, console.log(this.name) adalah output, dan didapati bahawa this.name ialah bicu, dan konteks ini telah berubah

Analisis mendalam tentang apply, call dan bind dalam JS adalah semua kandungan yang dikongsi oleh editor. Saya harap ia boleh memberi rujukan kepada anda dan saya harap anda akan menyokong Script Home.

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan