Rumah > hujung hadapan web > tutorial js > Bagaimanakah `ini` Berkelakuan Berbeza dalam Modul, Fungsi dan Pendengar Acara Node.js?

Bagaimanakah `ini` Berkelakuan Berbeza dalam Modul, Fungsi dan Pendengar Acara Node.js?

Barbara Streisand
Lepaskan: 2024-12-01 14:24:14
asal
394 orang telah melayarinya

How Does `this` Behave Differently in Node.js Modules, Functions, and Event Listeners?

Memahami "ini" dalam Modul dan Fungsi Node.js

Apabila menggunakan "ini" dalam Node.js, adalah penting untuk memahaminya tingkah laku yang berbeza-beza berdasarkan konteks.

Modul Skop

Dalam kod peringkat teratas dalam modul Nod, "ini" bersamaan dengan module.exports. Ini ialah objek kosong, seperti yang anda perhatikan.

Skop Fungsi

Dalam fungsi, "ini" ditentukan semula sebelum setiap pelaksanaan. Nilainya bergantung pada cara fungsi dipanggil:

  • aFunction(): Apabila dipanggil terus, "ini" menjadi objek global (disebabkan oleh mod tidak ketat).
  • aFunction .call(newThis): Apabila dipanggil dengan .call(), "this" ditetapkan kepada newThis.
  • Pendengar acara: Apabila fungsi digunakan sebagai pendengar acara (cth., addEventListener), "ini" biasanya ditetapkan kepada elemen yang mencetuskan acara.

Pemuatan Modul Nod

Apabila memerlukan JavaScript fail sebagai modul Node, enjin Node membungkus kod fail dalam fungsi. Fungsi pembungkus ini digunakan dengan set "ini" kepada module.exports.

Kesimpulan

Nilai "ini" berbeza yang anda perhatikan berpunca daripada penggunaan "ini" di dalam fungsi yang berbeza:

  • "ini" pertama dalam var a = ini; tergolong dalam fungsi pembungkus modul ciptaan Node, dengan "ini" ialah module.exports (objek kosong).
  • "ini" kedua dalam aFunction() tergolong dalam aFunction itu sendiri, yang, apabila dilaksanakan tanpa ketat mod, tetapkan "ini" kepada objek global.

Atas ialah kandungan terperinci Bagaimanakah `ini` Berkelakuan Berbeza dalam Modul, Fungsi dan Pendengar Acara Node.js?. 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