Rumah hujung hadapan web tutorial js Memahami Kata Kunci `ini` dalam JavaScript

Memahami Kata Kunci `ini` dalam JavaScript

Jul 16, 2024 pm 04:35 PM

Understanding the `this` Keyword in JavaScript

Kata kunci dalam JavaScript ini boleh menjadi salah satu konsep yang paling mengelirukan untuk pembangun baharu. Nilainya boleh berubah bergantung pada tempat ia digunakan, menjadikannya penting untuk memahami tingkah lakunya dalam konteks yang berbeza. Artikel ini akan mentafsirkan kata kunci ini dengan meneroka penggunaannya dalam pelbagai senario.

Apakah ini?

Dalam JavaScript, ini merujuk kepada konteks di mana fungsi dilaksanakan. Ia menyediakan cara untuk mengakses sifat dan kaedah objek dari dalam objek itu sendiri.

Konteks Global

Apabila digunakan dalam konteks global (di luar mana-mana fungsi atau objek), ini merujuk kepada objek global. Dalam pelayar web, objek global ialah tetingkap.

console.log(this); // In a browser, this will log the window object
Salin selepas log masuk

Konteks Fungsi

Apabila digunakan di dalam fungsi, ini bergantung pada cara fungsi dipanggil.

Panggilan Fungsi Biasa

Dalam panggilan fungsi biasa, ini merujuk kepada objek global (atau tidak ditentukan dalam mod ketat).

function showThis() {
  console.log(this);
}

showThis(); // Logs window (or undefined in strict mode)
Salin selepas log masuk

Panggilan Kaedah

Apabila fungsi dipanggil sebagai kaedah objek, ini merujuk kepada objek itu sendiri.

const person = {
  name: 'Alice',
  greet: function() {
    console.log(this.name);
  }
};

person.greet(); // Logs "Alice"
Salin selepas log masuk

Konteks Pembina

Apabila fungsi digunakan sebagai pembina dengan kata kunci baharu, ini merujuk kepada contoh yang baru dibuat.

function Person(name) {
  this.name = name;
}

const bob = new Person('Bob');
console.log(bob.name); // Logs "Bob"
Salin selepas log masuk

Fungsi Anak Panah

Fungsi anak panah mempunyai tingkah laku yang berbeza. Mereka tidak mempunyai konteks ini sendiri; sebaliknya, mereka mewarisi ini daripada konteks leksikal sekeliling.

const obj = {
  name: 'Carol',
  regularFunction: function() {
    console.log(this.name);
  },
  arrowFunction: () => {
    console.log(this.name);
  }
};

obj.regularFunction(); // Logs "Carol"
obj.arrowFunction();   // Logs undefined (or the global object in non-strict mode)
Salin selepas log masuk

Pengendali Acara

Dalam pengendali acara, ini merujuk kepada elemen yang menerima acara.

document.getElementById('myButton').addEventListener('click', function() {
  console.log(this); // Logs the button element
});
Salin selepas log masuk

Pengikatan Eksplisit

JavaScript menyediakan kaedah untuk menetapkan nilai ini secara eksplisit menggunakan panggilan, gunakan dan ikat.

hubungi dan mohon

Kaedah panggilan dan guna membolehkan anda menggunakan fungsi dengan nilai ini yang ditentukan.

function introduce() {
  console.log(`Hello, my name is ${this.name}`);
}

const person = { name: 'Dave' };

introduce.call(person); // Logs "Hello, my name is Dave"
introduce.apply(person); // Logs "Hello, my name is Dave"
Salin selepas log masuk

Perbezaan antara memanggil dan memohon ialah cara mereka mengendalikan hujah. call mengambil argumen secara individu, manakala apply mengambilnya sebagai tatasusunan.

mengikat

Kaedah bind mencipta fungsi baharu yang, apabila dipanggil, menetapkan nilai ini kepada nilai yang disediakan.

function introduce() {
  console.log(`Hello, my name is ${this.name}`);
}

const person = { name: 'Eve' };

const boundIntroduce = introduce.bind(person);
boundIntroduce(); // Logs "Hello, my name is Eve"
Salin selepas log masuk

Kesimpulan

Memahami kata kunci ini adalah penting untuk menguasai JavaScript. Dengan mengenali cara ini berkelakuan dalam konteks yang berbeza, anda boleh menulis kod yang lebih boleh diramal dan boleh diselenggara. Sama ada anda menggunakan kaedah, pembina atau fungsi anak panah, mengetahui cara ini beroperasi akan membantu anda mengelakkan perangkap biasa dan memanfaatkan kuasanya dengan berkesan.

Atas ialah kandungan terperinci Memahami Kata Kunci `ini` dalam JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Ganti aksara rentetan dalam javascript Ganti aksara rentetan dalam javascript Mar 11, 2025 am 12:07 AM

Ganti aksara rentetan dalam javascript

periksa jQuery jika tarikh sah periksa jQuery jika tarikh sah Mar 01, 2025 am 08:51 AM

periksa jQuery jika tarikh sah

jQuery mendapatkan padding/margin elemen jQuery mendapatkan padding/margin elemen Mar 01, 2025 am 08:53 AM

jQuery mendapatkan padding/margin elemen

10 Tab Accordion JQuery 10 Tab Accordion JQuery Mar 01, 2025 am 01:34 AM

10 Tab Accordion JQuery

10 patut diperiksa plugin jQuery 10 patut diperiksa plugin jQuery Mar 01, 2025 am 01:29 AM

10 patut diperiksa plugin jQuery

HTTP Debugging dengan Node dan HTTP-Console HTTP Debugging dengan Node dan HTTP-Console Mar 01, 2025 am 01:37 AM

HTTP Debugging dengan Node dan HTTP-Console

Tutorial Persediaan API Carian Google Custom Tutorial Persediaan API Carian Google Custom Mar 04, 2025 am 01:06 AM

Tutorial Persediaan API Carian Google Custom

jQuery tambah bar scroll ke div jQuery tambah bar scroll ke div Mar 01, 2025 am 01:30 AM

jQuery tambah bar scroll ke div

See all articles