Rumah > hujung hadapan web > tutorial js > Bagaimanakah Kata Kunci 'ini' Berkelakuan dalam Literal Objek JavaScript?

Bagaimanakah Kata Kunci 'ini' Berkelakuan dalam Literal Objek JavaScript?

Susan Sarandon
Lepaskan: 2024-12-18 12:31:18
asal
458 orang telah melayarinya

How Does the

Memahami Kata Kunci "ini" dalam Literal Objek JavaScript

Dalam literal objek dalam JavaScript, gelagat kata kunci "ini" mungkin agak berbeza daripada bahasa pengaturcaraan lain. Berikut ialah penjelasan komprehensif tentang cara ia berfungsi.

Pengikatan Masa Panggilan

Tidak seperti bahasa pengikatan lewat yang lain, JavaScript mengikat "ini" pada masa panggilan, bukan semasa penyusunan masa atau masa jalan. Ini bermakna nilai "ini" bergantung pada cara fungsi dipanggil.

Peraturan Mengikat

Peraturan mengikat untuk "ini" dalam literal objek JavaScript adalah seperti berikut:

  1. Panggilan Pembina: Apabila fungsi dipanggil menggunakan kata kunci "baru", kata kunci "ini" terikat pada objek yang baru dibuat.
  2. Kaedah Objek: Apabila dipanggil sebagai kaedah objek, "ini" mengikat objek yang dimiliki oleh kaedah itu , iaitu objek sebelum titik terakhir.
  3. Skop Global: Di luar mana-mana fungsi atau jika fungsi dipanggil tanpa sebarang konteks objek, "ini" terikat pada objek global, biasanya disebut "tetingkap" dalam pelayar web.
  4. Pengendali Acara: Dalam pengendali acara, "ini" biasanya terikat pada DOM elemen yang mencetuskan acara.
  5. Panggil() dan Apply() Kaedah: Kaedah "call()" dan "apply()" boleh digunakan untuk menetapkan "ini" secara eksplisit kepada mana-mana objek, membenarkan satu objek mengakses kaedah yang lain.
  6. Function.bind(): Kaedah "Function.bind()" juga boleh digunakan untuk mengikat "ini" secara eksplisit pada objek tertentu, mencipta contoh fungsi baharu dengan yang dikehendaki mengikat.

Contoh Kes Penggunaan

Untuk menggambarkan peraturan mengikat yang berbeza:

const obj = {
  foo: "Foo",
  bar() {
    console.log(this.foo); // "Foo" - "this" refers to the object
  },
};

obj.bar(); // Calls the method, binding "this" to the object
Salin selepas log masuk
function MyDate(date) {
  this.date = date;
}

const obj1 = {
  foo: new Date(),
  bar: new MyDate(this.foo), // Error: this.foo is undefined
};

const obj2 = {
  foo: new Date(),
  bar: new MyDate(obj2.foo), // Works: "this" refers to obj2
};
Salin selepas log masuk

Dalam contoh pertama, "ini" merujuk kepada objek "obj" kerana kaedah itu dipanggil sebagai kaedah objek. Dalam contoh kedua, "ini" tidak ditentukan dalam "obj1" kerana fungsi dipanggil tanpa sebarang konteks objek. Dalam "obj2," "this" merujuk kepada "obj2" kerana fungsi dipanggil secara eksplisit dengan objek "this".

Atas ialah kandungan terperinci Bagaimanakah Kata Kunci 'ini' Berkelakuan dalam Literal Objek 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan