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
Barbara Streisandasal
2024-12-01 14:24:14468semak imbas

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!

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