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

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

Patricia Arquette
Patricia Arquetteasal
2024-12-13 21:48:21629semak imbas

How Does the `this` Keyword Behave in JavaScript Object Literals?

Kelakuan Kata Kunci "ini" dalam Literal Objek Javascript

Dalam literal objek, kata kunci "ini" berfungsi sebagai pemegang tempat untuk objek sendiri. Walau bagaimanapun, tingkah lakunya boleh berbeza-beza bergantung pada keadaan di mana ia dipanggil.

Dalam kod anda:

var MyDate = function(date) {
    this.date = date;
};

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

var obj2 = {};
obj2.foo = new Date();
obj2.bar = new MyDate(this.foo);  //  this.foo is undefined

var obj3 = {
    foo: new Date(),
    bar: new MyDate(obj3.foo)
};

var obj4 = {};
obj4.foo = new Date();
obj4.bar = new MyDate(obj4.foo);

Memahami Pengikatan "ini"

Kata kunci "ini" Javascript mempamerkan pengikatan lewat, bermakna nilainya tidak ditentukan sehingga fungsi itu digunakan. Dalam kes anda:

Senario 1 dan 2:

  • Dalam "obj1" dan "obj2," kata kunci "ini" dalam "MyDate baharu" fungsi merujuk kepada objek global (iaitu, "tetingkap") kerana ia tidak digunakan sebagai kaedah objek tertentu. Memandangkan tiada sifat bernama "foo" pada objek global, ia menghasilkan ralat yang tidak ditentukan.

Senario 3 dan 4:

  • Dalam "obj3" dan "obj4," kata kunci "ini" berjaya merujuk kepada objek masing-masing kerana fungsi "MyDate baharu" dipanggil sebagai kaedah objek ini. Oleh itu, "this.foo" dengan betul mengakses sifat "foo" dalam setiap objek.

Kesimpulan

Gelagat kata kunci "ini" dalam objek literal bergantung pada konteks di mana fungsi itu digunakan. Jika tidak terikat secara eksplisit pada objek, ia lalai kepada objek global. Walau bagaimanapun, apabila dipanggil sebagai kaedah objek, ia merujuk kepada objek khusus itu, memastikan akses yang betul kepada sifat dan kaedah objek.

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!

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