Rumah >hujung hadapan web >tutorial js >Apakah Perbezaan Antara Kaedah `call()`, `apply()` dan `bind()` JavaScript?

Apakah Perbezaan Antara Kaedah `call()`, `apply()` dan `bind()` JavaScript?

Linda Hamilton
Linda Hamiltonasal
2024-12-02 15:10:14910semak imbas

What's the Difference Between JavaScript's `call()`, `apply()`, and `bind()` Methods?

Memahami Perbezaan Antara Kaedah call(), apply(), dan bind()

Dalam JavaScript, pembangun sering menghadapi keperluan untuk menetapkan konteks pelaksanaan sesuatu fungsi. Kaedah call() dan apply() berfungsi untuk tujuan ini, membolehkan pengubahsuaian kata kunci fungsi ini. Walau bagaimanapun, kaedah lain, bind(), menawarkan fungsi yang berbeza.

call() vs. apply()

call() dan apply() berkongsi tujuan yang sama : melaksanakan fungsi dengan segera sambil menetapkan konteks tertentu (ini). Walau bagaimanapun, ia berbeza dalam cara hujah dihantar: call() menerima hujah secara individu, manakala apply() menjangkakan tatasusunan tunggal argumen. Perbezaan ini digambarkan dalam contoh kod yang disediakan:

// call()
obj.getX.call(obj);

// apply()
obj.getX.apply(obj);

bind()

Tidak seperti call() dan apply(), bind() tidak digunakan untuk seruan fungsi segera. Sebaliknya, ia mengembalikan fungsi baharu dengan konteks yang ditentukan sebelum terikat. Fungsi terikat ini boleh digunakan kemudian tanpa sebarang pengubahsuaian konteks tambahan. Contoh kod menunjukkan tingkah laku ini:

// bind()
// The this keyword of the bound function is locked to obj
var boundX = obj.getX.bind(obj);
boundX(); // Returns 81

Bila Menggunakan bind()

Gunakan bind() apabila anda ingin mencipta fungsi dengan konteks pratetap untuk pelaksanaan masa hadapan. Ini terbukti amat berguna dalam pengendalian acara, di mana anda memastikan bahawa konteks yang sesuai dikekalkan untuk panggilan balik dan acara tak segerak. Contoh kod yang disediakan menggambarkan kes penggunaan ini:

function MyObject(element) {
    this.elm = element;

    element.addEventListener('click', this.onClick.bind(this), false);
};

Dalam contoh ini, kaedah onClick terikat pada contoh MyObject supaya apabila peristiwa klik berlaku, kata kunci ini dalam fungsi onClick akan merujuk kepada contoh yang betul.

Kesimpulan

Semasa memanggil() dan memohon() membenarkan untuk penggunaan fungsi segera dengan pengubahsuaian konteks, bind() cemerlang dalam menyediakan fungsi untuk pelaksanaan masa hadapan dengan konteks yang telah ditetapkan. Dengan memahami nuansa kaedah ini, pembangun boleh mengurus konteks fungsi dengan berkesan dalam pelbagai senario.

Atas ialah kandungan terperinci Apakah Perbezaan Antara Kaedah `call()`, `apply()` dan `bind()` JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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