Mengambil contoh, jelaskan panggilan, terapkan, dan mengikat metode dalam JavaScript untuk referensi Anda. Konten spesifiknya adalah sebagai berikut
<! Doctype html> <html> <head> <meta charset = "utf-8"> <itement> </iteme> <script type = "text/javascript"> function man (nama, seks, usia) {this.name = name; this.sex = seks; this.age = usia; this.say = function (sekolah, zhuanye) {console.log (this.name + "," + this.sex + ", tahun ini" + ini. San "," pria ", 26); var wanita = wanita baru (" xiaohong "," wanita ", 18); man.say ('Tsinghua University', 'excavator'); man.say.call (wanita," Lanxiang Technical School "," Extrical Welding "); man.say.sapry (woman," New Orient "(" oriental "(" woman ("woman (" woman, "woman," woman, "woman," woman, "woman," woman, "woman," woman, "woman," woman, "woman," woman, "woman," woman, "woman," woman, "woman," woman, "woman," woman, "woman") Klub "," musik pop "); </script> </head> <body> </body> </html>Mengapa? Apa yang Dikatakan, Terapkan, Bind lakukan? Mengapa mempelajari ini?
Umumnya digunakan untuk menentukan lingkungan ini, dan masalah ini biasanya terjadi sebelum belajar.
var a = {user: "Dream chasing", fn: function () {console.log (this.user); }} var b = a.fn; b (); //belum diartikanApa yang salah dengan pengguna di objek A tetapi tidak terdefinisi? Tidak apa -apa jika kita secara langsung menjalankan a.fn ().
var a = {user: "Chasing Dreams", fn: function () {console.log (this.user); }} a.fn (); // mengejar mimpiAlasan mengapa ini dapat dicetak di sini adalah karena ini di sini menunjuk berfungsi, jadi mengapa tidak menunjuk ke A di atas? Jika kita perlu memahami masalah yang menunjuk ini, silakan lihat pemahaman menyeluruh tentang penunjuk ini dalam JS, dan tidak perlu menghafal artikel ini.
Meskipun metode ini dapat mencapai tujuan kita, kadang -kadang kita harus menyimpan objek ini ke variabel lain, sehingga kita dapat menggunakan metode berikut.
1. Call ()
var a = {user: "Catching Dreams", fn: function () {console.log (this.user); // menangkap mimpi}} var b = A.fn; b.call (a);Dengan menambahkan parameter pertama ke lingkungan mana yang akan ditambahkan B, cukup masukkan poin ini ke objek itu.
Selain parameter pertama, metode panggilan juga dapat menambahkan beberapa parameter, sebagai berikut:
var a = {user: "Catching Dreams", fn: function (e, ee) {console.log (this.user); // Catching Dreams Console.log (E+EE); // 3}} var b = a.fn; b.call (a, 1,2);2. Terapkan ()
Metode Apply agak mirip dengan metode panggilan, ia juga dapat mengubah menunjuk ini
var a = {user: "Catching Dreams", fn: function () {console.log (this.user); // menangkap mimpi}} var b = A.fn; b.Apply (a);Demikian pula, berlaku juga dapat memiliki beberapa parameter, tetapi perbedaannya adalah bahwa parameter kedua harus berupa array, sebagai berikut:
var a = {user: "Catching Dreams", fn: function (e, ee) {console.log (this.user); // Catching Dreams Console.log (E+EE); // 11}} var b = a.fn; b.Apply (a, [10,1]);atau
var a = {user: "Catching Dreams", fn: function (e, ee) {console.log (this.user); // Catching Dreams Console.log (E+EE); // 520}} var b = a.fn; var arr = [500,20]; b.Apply (a, arr); // Perhatikan bahwa jika parameter pertama panggilan dan berlaku ditulis sebagai nol, maka ini menunjuk ke objek jendela var a = {user: "Dream chasing", fn: function () {console.log (this); // window {eksternal: objek, chrome: objek, dokumen: dokumen, a: objek, pidato speechsynthesis: speechsynthesis ...}}} var b = a.fn; b.Apply (null);3. Bind ()
Metode BIND agak berbeda dari metode panggilan dan menerapkan, tetapi mereka dapat digunakan untuk mengubah arah ini.
Mari kita bicara tentang perbedaan mereka terlebih dahulu.
var a = {user: "Dream chasing", fn: function () {console.log (this.user); }} var b = a.fn; b.bind (a);Kami menemukan bahwa kode itu tidak dicetak. Ya, ini adalah perbedaan antara metode Bind dan Call dan Apply. Bahkan, metode BIND mengembalikan fungsi yang dimodifikasi.
var a = {user: "Dream chasing", fn: function () {console.log (this.user); }} var b = a.fn; var c = b.bind (a); console.log (c); // function () {[kode asli]}Jadi mari kita jalankan fungsi C untuk melihat apakah kita dapat mencetak pengguna di objek a
var a = {user: "Catching Dreams", fn: function () {console.log (this.user); // menangkap mimpi}} var b = a.fn; var c = b.bind (a); c ();OK, BIND juga dapat memiliki beberapa parameter, dan parameter dapat ditambahkan lagi saat dieksekusi, tetapi harus dicatat bahwa parameter dilakukan dalam urutan parameter formal.
var a = {user: "Catching Dreams", fn: function (e, d, f) {console.log (this.user); // Catching Dreams Console.log (E, D, F); // 10 1 2}} var b = a.fn; var c = b.bind (a, 10); c (1,2);Ringkasan: Panggil dan terapkan baik mengubah ini dalam konteks dan segera jalankan fungsi ini. Metode BIND memungkinkan fungsi yang sesuai dipanggil kapan pun ia mau, dan menambahkan parameter saat dieksekusi. Ini adalah perbedaan mereka dan memilih untuk menggunakannya sesuai dengan situasi Anda yang sebenarnya.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.