Rumah > hujung hadapan web > tutorial js > Merujuk dengan betul aplikasi kaedah bind dalam petua JavaScript_javascript

Merujuk dengan betul aplikasi kaedah bind dalam petua JavaScript_javascript

WBOY
Lepaskan: 2016-05-16 15:59:55
asal
1320 orang telah melayarinya

Dalam JavaScript, kaedah sering melibatkan konteks, iaitu ini, jadi ia selalunya tidak boleh dipetik secara langsung Ambil console.log("info...") yang paling biasa sebagai contoh Elakkan menulis konsol yang panjang dan terus menggunakan log ( "info..."), anda secara automatik akan memikirkan sintaks berikut:

 var log = console.log;
 log("info…");
Salin selepas log masuk

Maaf, ralat berlaku semasa menjalankan: TypeError: Invocation haram.

Kenapa? Untuk console.log("info..."), kaedah log dipanggil pada objek konsol, jadi ini dalam kaedah log menghala ke objek konsol dan kami menggunakan pembolehubah log untuk menunjuk ke kaedah console.log, dan kemudian panggil kaedah log secara langsung Pada masa ini kaedah log ini menunjuk kepada objek tetingkap Jika konteksnya tidak konsisten, sudah tentu ralat akan dilaporkan.

Pada ketika ini kita boleh menggunakan kaedah bind untuk menyelesaikan masalah ini. Kaedah bind membolehkan anda memasukkan ini secara manual sebagai konteks kaedah semasa, dan kemudian mengembalikan kaedah yang memegang konteks, sebagai contoh:

 var log = console.log.bind(console);
 log("info...");

Salin selepas log masuk

Dengan cara ini tidak akan ada ralat.

Walau bagaimanapun, kaedah bind tidak menyokong pelayar IE 8 dan lebih rendah Kami boleh melaksanakannya sendiri, ia sangat mudah.

 Function.prototype.bind = Function.prototype.bind || function(context){
   var _this = this;
   
   return function(){
     _this.apply(context, arguments);
   };
 };

Salin selepas log masuk

Teras dilaksanakan melalui kaedah pakai, aplikasi penutupan klasik. _ini menunjuk kepada kaedah semasa, dan konteks menunjukkan kepada konteks kaedah semasa, yang kedua-duanya diakses melalui penutupan.

Di atas adalah keseluruhan kandungan artikel ini, saya harap anda semua menyukainya.

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