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
Lepaskan: 2024-12-02 15:10:14
asal
909 orang telah melayarinya

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);
Salin selepas log masuk

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
Salin selepas log masuk

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);
};
Salin selepas log masuk

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan