JavaScript ini

Dalam tutorial ini, anda akan belajar mengenai kata kunci JavaScript ini dengan bantuan contoh.

Dalam JavaScript, thiskata kunci merujuk kepada objek di mana ia dipanggil.

1. Skop Global Di Dalam ini

Apabila thisdigunakan sendiri, thismerujuk kepada objek global ( windowobjek dalam penyemak imbas). Sebagai contoh,

 let a = this; console.log(a); // Window () this.name = 'Sarah'; console.log(window.name); // Sarah

Di sini, this.namesama seperti window.name.

2. Fungsi Dalam ini

Ketika thisdigunakan dalam fungsi, thismerujuk pada objek global ( windowobjek dalam penyemak imbas). Sebagai contoh,

 function greet() ( // this inside function // this refers to the global object console.log(this); ) greet(); // Window ()

3. Fungsi Pembina Dalam ini

Dalam JavaScript, fungsi konstruktor digunakan untuk membuat objek. Apabila fungsi digunakan sebagai fungsi konstruktor, thismerujuk pada objek di dalamnya digunakan. Sebagai contoh,

 function Person() ( this.name = 'Jack'; console.log(this); ) let person1 = new Person(); console.log(person1.name);

Pengeluaran

 Orang (nama: "Jack") Jack

Di sini, thismerujuk kepada objek person1. Itulah sebabnya, person1.namememberi kita Jack.

Catatan : Apabila thisdigunakan dengan kelas ES6, ini merujuk pada objek di dalamnya digunakan (mirip dengan fungsi konstruktor).

4. Kaedah Objek Dalam ini

Apabila thisdigunakan di dalam kaedah objek, thismerujuk pada objek yang berada di dalamnya. Sebagai contoh,

 const person = ( name : 'Jack', age: 25, // this inside method // this refers to the object itself greet() ( console.log(this); console.log(this.name); ) ) person.greet();

Pengeluaran

 (nama: "Jack", umur: 25, salam: ƒ) Jack

Dalam contoh di atas, thismerujuk kepada personobjek.

5. Fungsi Inner Inner ini

Apabila anda mengakses thisfungsi dalaman (dalam kaedah), thismerujuk pada objek global. Sebagai contoh,

 const person = ( name : 'Jack', age: 25, // this inside method // this refers to the object itself greet() ( console.log(this); // (name: "Jack", age… ) console.log(this.age); // 25 // inner function function innerFunc() ( // this refers to the global object console.log(this); // Window (… ) console.log(this.age); // undefined ) innerFunc(); ) ) person.greet();

Pengeluaran

 (nama: "Jack", umur: 25, salam: ƒ) 25 Tetingkap (…) tidak ditentukan

Di sini, thisbahagian dalam innerFunc()merujuk kepada objek global kerana innerFunc()terdapat dalam kaedah.

Namun, this.ageluaran innerFunc()merujuk kepada personobjek.

6. Fungsi Panah Dalam ini

Di dalam fungsi anak panah, thismerujuk kepada skop induk. Sebagai contoh,

 const greet = () => ( console.log(this); ) greet(); // Window (… )

Fungsi anak panah tidak ada yang tersendiri this. Apabila anda menggunakan thisfungsi anak panah, thismerujuk pada objek ruang lingkup induknya. Sebagai contoh,

 const greet = ( name: 'Jack', // method sayHi () ( let hi = () => console.log(this.name); hi(); ) ) greet.sayHi(); // Jack

Di sini, this.namedi dalam hi()fungsi merujuk kepada greetobjek.

Anda juga dapat menggunakan fungsi anak panah untuk menyelesaikan masalah memiliki undefinedketika menggunakan fungsi di dalam suatu metode (seperti yang terlihat dalam Contoh 5). Sebagai contoh,

 const person = ( name : 'Jack', age: 25, // this inside method // this refers to the object itself greet() ( console.log(this); console.log(this.age); // inner function let innerFunc = () => ( // this refers to the global object console.log(this); console.log(this.age); ) innerFunc(); ) ) person.greet();

Pengeluaran

 (nama: "Jack", umur: 25, salam: ƒ) 25 (nama: "Jack", umur: 25, salam: ƒ) 25

Di sini, innerFunc()ditakrifkan menggunakan fungsi anak panah. Ia diambil thisdari skop induknya. Oleh itu, this.agememberi 25 .

Apabila fungsi anak panah digunakan this, ini merujuk pada ruang lingkup luar.

7. Fungsi Dalam ini dengan Mod Ketat

Apabila thisdigunakan dalam fungsi dengan mod ketat, thisadalah undefined. Sebagai contoh,

 'use strict'; this.name = 'Jack'; function greet() ( // this refers to undefined console.log(this); ) greet(); // undefined

Catatan : Ketika menggunakan thisfungsi dalam mode ketat, Anda dapat menggunakan panggilan Fungsi JavaScript ().

Sebagai contoh,

 'use strict'; this.name = 'Jack'; function greet() ( console.log(this.name); ) greet.call(this); // Jack

Apabila anda lulus thisdengan call()fungsi, greet()dianggap sebagai kaedah thisobjek (objek global dalam hal ini).

Artikel menarik...