Dalam tutorial ini, Anda akan belajar tentang JavaScript dengan kata kunci ini dengan bantuan contoh.
Dalam JavaScript, this
kata kunci mengacu pada objek tempat ia dipanggil.
1. Inside Global Scope ini
Ketika this
digunakan sendiri, this
mengacu pada objek global ( window
objek di browser). 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 Inside ini
Ketika this
digunakan dalam suatu fungsi, this
mengacu pada objek global ( window
objek di browser). Sebagai contoh,
function greet() ( // this inside function // this refers to the global object console.log(this); ) greet(); // Window ()
3. Fungsi Pembuat Bagian Dalam ini
Dalam JavaScript, fungsi konstruktor digunakan untuk membuat objek. Ketika suatu fungsi digunakan sebagai fungsi konstruktor, this
mengacu pada objek di dalamnya yang digunakan. Sebagai contoh,
function Person() ( this.name = 'Jack'; console.log(this); ) let person1 = new Person(); console.log(person1.name);
Keluaran
Orang (nama: "Jack") Jack
Di sini, this
mengacu pada objek person1. Itu sebabnya, person1.name
beri kami Jack.
Catatan : Saat this
digunakan dengan kelas ES6, ini merujuk ke objek di dalamnya yang digunakan (mirip dengan fungsi konstruktor).
4. Metode Objek Di Dalam ini
Saat this
digunakan di dalam metode objek, this
mengacu pada objek tempatnya berada. 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();
Keluaran
(nama: "Jack", umur: 25, salam: ƒ) Jack
Dalam contoh di atas, this
mengacu pada person
objek.
5. Fungsi Inside Inner ini
Saat Anda mengakses this
di dalam fungsi bagian dalam (di dalam metode), this
merujuk ke 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();
Keluaran
(nama: "Jack", umur: 25, salam: ƒ) 25 Window (…) undefined
Di sini, this
inside innerFunc()
mengacu pada objek global karena innerFunc()
berada di dalam metode.
Namun, di this.age
luar innerFunc()
mengacu pada person
objek.
6. Fungsi Panah Dalam ini
Di dalam fungsi panah, this
mengacu pada lingkup induk. Sebagai contoh,
const greet = () => ( console.log(this); ) greet(); // Window (… )
Fungsi panah tidak punya sendiri this
. Saat Anda menggunakan this
di dalam fungsi panah, this
merujuk ke objek 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 mengacu pada greet
objek.
Anda juga dapat menggunakan fungsi panah untuk memecahkan masalah undefined
saat menggunakan fungsi di dalam metode (seperti yang terlihat pada 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();
Keluaran
(nama: "Jack", usia: 25, salam: ƒ) 25 (nama: "Jack", usia: 25, salam: ƒ) 25
Di sini, innerFunc()
didefinisikan menggunakan fungsi panah. Ini mengambil this
dari lingkup induknya. Karenanya, this.age
berikan 25 .
Saat fungsi panah digunakan dengan this
, ini merujuk ke lingkup luar.
7. Fungsi Inside ini dengan Strict Mode
Saat this
digunakan dalam fungsi dengan mode ketat, this
adalah undefined
. Sebagai contoh,
'use strict'; this.name = 'Jack'; function greet() ( // this refers to undefined console.log(this); ) greet(); // undefined
Catatan : Saat menggunakan this
di dalam fungsi dengan 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
Ketika Anda meneruskan this
dengan call()
fungsi tersebut, greet()
diperlakukan sebagai metode this
objek (objek global dalam kasus ini).