Bagaimanakah `ini` Berfungsi dalam Panggilan dan Panggilan Balik Fungsi JavaScript?

DDD
Lepaskan: 2024-11-03 15:42:30
asal
349 orang telah melayarinya

How Does `this` Work in JavaScript Function Calls and Callbacks?

Apabila Penunjuk Ini Ditetapkan dalam JavaScript

Memahami Penunjuk Ini dalam Panggilan Fungsi

Dalam JavaScript, setiap panggilan fungsi ditetapkan nilai baru untuk ini. Nilai yang diberikan kepada ini ditentukan oleh kaedah yang digunakan untuk memanggil fungsi.

Cara Utama untuk Menetapkan Penunjuk Ini

Terdapat terutamanya enam cara untuk menetapkan penunjuk ini dalam JavaScript:

  • Panggilan Fungsi Biasa: Lalai kepada objek global (cth., tetingkap) atau tidak ditentukan (dalam mod ketat).
  • Kaedah Panggilan: Tuding pada objek yang memiliki kaedah.
  • **.apply() atau .call(): Tetapkan ini mengikut hujah yang diluluskan.
  • Menggunakan baharu : Mencipta objek baharu dan menetapkan ini kepadanya.
  • **.bind(): Mengembalikan fungsi baharu dengan nilai tersuai ini, menggunakan .apply() secara dalaman.
  • Fungsi Anak Panah Lemak ES6: Mengikat nilai leksikal semasa ini (tidak boleh ditindih).

Ini dalam Fungsi Panggilan Balik

Fungsi panggil balik bukan cara yang unik untuk menetapkan ini. Fungsi panggilan menentukan nilai ini apabila ia memanggil panggilan balik.

Analisis Contoh

Dalam coretan kod anda:

<code class="javascript">var randomFunction = function(callback) {
  var data = 10;
  callback(data);
};

var obj = {
  initialData: 20,
  sumData: function(data) {
    var sum = this.initialData + data;
    console.log(sum);
  },
  prepareRandomFunction: function() {
    randomFunction(this.sumData.bind(this));
  }
};

obj.prepareRandomFunction();</code>
Salin selepas log masuk
  • obj.prepareRandomFunction() menggunakan panggilan kaedah, menetapkan ini kepada obj.
  • randomFunction(this.sumData.bind(this)) menggunakan .bind(), yang mengikat nilai semasa ini (iaitu, obj) kepada fungsi panggil balik dikembalikan.

Oleh itu, apabila randomFunction memanggil panggilan balik, ini ditetapkan kepada obj kerana penggunaan .bind() dalam this.sumData.bind(this).

Atas ialah kandungan terperinci Bagaimanakah `ini` Berfungsi dalam Panggilan dan Panggilan Balik Fungsi 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan