Rumah >hujung hadapan web >tutorial js >Bilakah Mengikat \'ini\' Diperlukan dalam JavaScript?
Dalam JavaScript, nilai "ini" ditentukan oleh cara sesuatu fungsi dipanggil. Jika anda memanggil fungsi secara terus, anda mengawal nilai "ini."
Walau bagaimanapun, apabila fungsi dihantar sebagai panggilan balik atau pengendali acara, kod luaran memanggilnya, membawa kepada nilai "ini" yang tidak dijangka. Untuk memastikan bahawa "ini" merujuk kepada objek tertentu, anda boleh menggunakan kaedah .bind.
.bind membolehkan anda menetapkan nilai "ini" sebelum memanggil fungsi, mengikatnya dengan berkesan pada objek itu.
Isu ini timbul daripada cara persekitaran pelaksanaan JavaScript menentukan nilai "ini." Apabila fungsi ditakrifkan, "ini" tidak ditentukan. Jika fungsi dipanggil sebagai kaedah objek, "ini" akan merujuk kepada objek itu.
Walau bagaimanapun, apabila fungsi dipanggil secara bebas atau sebagai panggilan balik, "ini" biasanya merujuk kepada objek global (atau tidak ditentukan dalam mod ketat). Untuk memastikan ketekalan dan tingkah laku yang betul, adalah penting untuk mengawal nilai "ini" melalui kaedah seperti .bind.
Dalam contoh 3, storeMyName3 memanggil terus fungsi getName, yang mengembalikan nilai myName.name. Keputusan ini diberikan kepada storeMyName3, yang bukan fungsi tetapi nilai.
Sebaliknya, dalam contoh 1 dan 2, storeMyName dan storeMyName2 adalah rujukan kepada fungsi getName itu sendiri. Apabila memanggil mereka, anda melaksanakan fungsi dan memperoleh hasilnya.
Contoh 2 menggunakan .bind(myName) untuk menetapkan nilai "ini" kepada myName sebelum memanggil fungsi. Ini memastikan bahawa this.name merujuk kepada myName.name.
Oleh itu, contoh 3 tidak mengalami isu "ini" kerana ia tidak memanggil fungsi itu kemudian, manakala contoh 1 dan 2 memerlukan .bind to tetapkan nilai "ini" secara eksplisit apabila dipanggil pada masa hadapan.
Atas ialah kandungan terperinci Bilakah Mengikat \'ini\' Diperlukan dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!