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

Bagaimanakah Kata Kunci `ini` Berkelakuan Di Dalam Objek JavaScript Literal?

DDD
Lepaskan: 2024-12-26 03:24:08
asal
639 orang telah melayarinya

How Does the `this` Keyword Behave Inside a JavaScript Object Literal?

Cara Kata Kunci "ini" Bertindak Dalam Objek Literal dalam JavaScript

Dalam JavaScript, kata kunci "ini" merujuk kepada objek semasa di mana fungsi itu digunakan. Walau bagaimanapun, pengikatan "ini" boleh mengelirukan, terutamanya apabila digunakan dalam literal objek.

Dalam literal objek, nilai "ini" tidak terikat pada objek itu sendiri tetapi sebaliknya kepada objek global ( tetingkap dalam pelayar). Ini boleh membawa kepada tingkah laku yang tidak dijangka, seperti yang dilihat dalam kod berikut:

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

Dalam contoh ini, "this.foo" tidak ditentukan dalam pembina MyDate kerana "ini" merujuk kepada objek global, yang tidak mempunyai sifat bernama "foo."

Untuk menyelesaikan isu ini, anda boleh mengikat "ini" secara eksplisit dalam literal objek menggunakan kaedah bind():

var obj4 = {};
obj4.foo = new Date();
obj4.bar = new MyDate(obj4.foo.bind(obj4));
Salin selepas log masuk

Ini memastikan bahawa "ini" di dalam pembina MyDate merujuk kepada objek yang betul (obj4).

Sebagai alternatif, anda boleh menggunakan fungsi anak panah untuk mengikat "ini" pada objek:

var obj3 = {
  foo: new Date(),
  bar: new MyDate(() => this.foo)
};
Salin selepas log masuk

Dalam fungsi anak panah, "ini" terikat pada skop sekeliling pada masa definisi, yang dalam kes ini ialah objek itu sendiri.

Atas ialah kandungan terperinci Bagaimanakah Kata Kunci `ini` Berkelakuan Di Dalam Objek JavaScript Literal?. 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