Rumah >hujung hadapan web >tutorial js >Analisis mendalam tentang memohon, memanggil dan mengikat dalam kemahiran JS_javascript
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;
function add(a, b) { alert(a + b); } function sub(a, b) { alert(a - b); }
add.call(sub,3,1);Hasilnya ialah 4
add.apply(sub,[3,1]);Hasilnya ialah 4
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)Untuk panggilan, anda memerlukan ini:
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.