Rumah >hujung hadapan web >tutorial js >Bagaimanakah Fungsi Anak Panah Mengendalikan Kata Kunci `ini` dalam JavaScript?

Bagaimanakah Fungsi Anak Panah Mengendalikan Kata Kunci `ini` dalam JavaScript?

Patricia Arquette
Patricia Arquetteasal
2024-12-10 10:19:10484semak imbas

How Do Arrow Functions Handle the `this` Keyword in JavaScript?

Fungsi Anak panah dan 'ini'

Dalam ES6, fungsi anak panah memperkenalkan pendekatan baharu kepada definisi kaedah. Walau bagaimanapun, terdapat perbezaan ketara antara fungsi anak panah dan fungsi tradisional apabila ia datang untuk mengakses kata kunci 'ini'.

Isunya:

Pertimbangkan kod berikut:

var person = {
  name: "jason",

  shout: () => console.log("my name is ", this.name)
}

person.shout() // Should print out my name is jason

Walaupun hasil yang dimaksudkan ialah mencetak "nama saya jason," konsol hanya mengeluarkan "nama saya." Ini kerana fungsi anak panah berkelakuan berbeza daripada fungsi tradisional dari segi pengikatan 'ini'.

Penjelasan:

Tidak seperti fungsi tradisional, fungsi anak panah tidak mengikat ' kata kunci ini kepada skop yang mengandungi. Sebaliknya, mereka mewarisi ikatan 'ini' dari konteks sekeliling. Dalam contoh di atas, 'ini' dalam fungsi anak panah merujuk kepada objek global, bukan objek 'orang'.

Penyelesaian:

Terdapat beberapa cara untuk menangani isu ini:

  1. Gunakan Bound Fungsi:
// Bind 'this' to the 'person' object
var shoutBound = function() { console.log("my name is ", this.name); }.bind(person);

// Assign the bound function to the 'shout' property
person.shout = shoutBound;
  1. Gunakan Fungsi Tradisional:
// Define a traditional function with 'this' bound to 'person'
person.shout = function() { console.log("my name is ", this.name); };
  1. Gunakan Kaedah ES6 Pengisytiharan:
// ES6 method declaration implicitly binds 'this' to the object
person = {
  name: "jason",

  shout() {
    console.log("my name is ", this.name);
  }
};

Dengan memahami gelagat berbeza fungsi anak panah berkenaan pengikatan 'ini', anda boleh menulis kod yang berkesan dan fleksibel dalam ES6.

Atas ialah kandungan terperinci Bagaimanakah Fungsi Anak Panah Mengendalikan Kata Kunci `ini` dalam 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