Dalam tutorial ini, anda akan belajar mengenai kata kunci JavaScript ini dengan bantuan contoh.
Dalam JavaScript, this
kata kunci merujuk kepada objek di mana ia dipanggil.
1. Skop Global Di Dalam ini
Apabila this
digunakan sendiri, this
merujuk kepada objek global ( window
objek dalam penyemak imbas). Sebagai contoh,
let a = this; console.log(a); // Window () this.name = 'Sarah'; console.log(window.name); // Sarah
Di sini, this.name
sama seperti window.name
.
2. Fungsi Dalam ini
Ketika this
digunakan dalam fungsi, this
merujuk pada objek global ( window
objek 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, this
merujuk 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, this
merujuk kepada objek person1. Itulah sebabnya, person1.name
memberi kita Jack.
Catatan : Apabila this
digunakan dengan kelas ES6, ini merujuk pada objek di dalamnya digunakan (mirip dengan fungsi konstruktor).
4. Kaedah Objek Dalam ini
Apabila this
digunakan di dalam kaedah objek, this
merujuk 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, this
merujuk kepada person
objek.
5. Fungsi Inner Inner ini
Apabila anda mengakses this
fungsi dalaman (dalam kaedah), this
merujuk 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, this
bahagian dalam innerFunc()
merujuk kepada objek global kerana innerFunc()
terdapat dalam kaedah.
Namun, this.age
luaran innerFunc()
merujuk kepada person
objek.
6. Fungsi Panah Dalam ini
Di dalam fungsi anak panah, this
merujuk kepada skop induk. Sebagai contoh,
const greet = () => ( console.log(this); ) greet(); // Window (… )
Fungsi anak panah tidak ada yang tersendiri this
. Apabila anda menggunakan this
fungsi anak panah, this
merujuk 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.name
di dalam hi()
fungsi merujuk kepada greet
objek.
Anda juga dapat menggunakan fungsi anak panah untuk menyelesaikan masalah memiliki undefined
ketika 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 this
dari skop induknya. Oleh itu, this.age
memberi 25 .
Apabila fungsi anak panah digunakan this
, ini merujuk pada ruang lingkup luar.
7. Fungsi Dalam ini dengan Mod Ketat
Apabila this
digunakan dalam fungsi dengan mod ketat, this
adalah undefined
. Sebagai contoh,
'use strict'; this.name = 'Jack'; function greet() ( // this refers to undefined console.log(this); ) greet(); // undefined
Catatan : Ketika menggunakan this
fungsi 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 this
dengan call()
fungsi, greet()
dianggap sebagai kaedah this
objek (objek global dalam hal ini).