Dalam JavaScript, nilai ini ditentukan oleh konteks pemanggilan fungsi . Walau bagaimanapun, konteks ini mungkin tidak selalu diingini apabila menggunakan fungsi panggil balik atau pengendali acara.
Pertimbangkan contoh berikut:
<code class="javascript">this.name = "John"; var myName = { name: "Tom", getName: function() { return this.name; } }; var storeMyName = myName.getName; // example 1 var storeMyName2 = myName.getName.bind(myName); // example 2 var storeMyName3 = myName.getName(); // example 3</code>
Memanggil storeMyName() dalam contoh 1 memperuntukkan ini kepada skop global , menghasilkan "John" dan bukannya "Tom" seperti yang dijangkakan.
Apabila mewakilkan pelaksanaan fungsi kepada kod lain, rujukan ini mungkin menjadi tidak dapat diramalkan. bind() membolehkan anda menetapkan nilai ini secara manual sebelum menggunakan fungsi.
Dalam contoh 2, memanggil storeMyName2() menggunakan bind(myName) memastikan bahawa nilai ini ditetapkan kepada objek myName, menyelesaikan masalah dalam contoh 1.
contoh 3 menggunakan myName.getName() tanpa mengikat, tetapi masih mengembalikan nilai yang betul kerana ini ditetapkan dengan sewajarnya apabila getName() fungsi dilaksanakan. Ini berbeza dengan contoh 1/2 di mana fungsi disimpan tanpa dilaksanakan.
Approach | Time of Invocation | Time of this Binding |
---|---|---|
Function Object | Future | Future |
Function Call | Now | Now |
f.bind() | Future | Now |
bind() adalah penting dalam JavaScript apabila anda perlu mengawal nilai ini fungsi yang akan dilaksanakan dalam konteks yang berbeza. Dengan menggunakan bind(), anda boleh menghalang tingkah laku yang tidak dijangka dan memastikan bahawa rujukan ini ditetapkan seperti yang dikehendaki.
Atas ialah kandungan terperinci Bila dan Mengapa JavaScript bind() Diperlukan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!