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 };
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));
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) };
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!