In diesem Tutorial lernen Sie anhand von Beispielen dieses Schlüsselwort von JavaScript kennen.
In JavaScript this
bezieht sich das Schlüsselwort auf das Objekt, in dem es aufgerufen wird.
1. dieses Inside Global Scope
Wenn this
es alleine verwendet wird, this
bezieht es sich auf das globale Objekt ( window
Objekt in Browsern). Beispielsweise,
let a = this; console.log(a); // Window () this.name = 'Sarah'; console.log(window.name); // Sarah
Hier this.name
ist das gleiche wie window.name
.
2. diese Inside-Funktion
Wenn this
in einer Funktion verwendet wird, this
bezieht sich auf das globale Objekt ( window
Objekt in Browsern). Beispielsweise,
function greet() ( // this inside function // this refers to the global object console.log(this); ) greet(); // Window ()
3. diese Inside Constructor-Funktion
In JavaScript werden Konstruktorfunktionen zum Erstellen von Objekten verwendet. Wenn eine Funktion als Konstruktorfunktion verwendet wird, this
bezieht sie sich auf das Objekt, in dem sie verwendet wird. Beispielsweise,
function Person() ( this.name = 'Jack'; console.log(this); ) let person1 = new Person(); console.log(person1.name);
Ausgabe
Person (Name: "Jack") Jack
Hier this
bezieht sich auf das Objekt person1. Deshalb person1.name
gibt uns Jack.
Hinweis : Wenn this
es mit ES6-Klassen verwendet wird, bezieht es sich auf das Objekt, in dem es verwendet wird (ähnlich wie Konstruktorfunktionen).
4. diese Inside Object-Methode
Wenn this
es in der Methode eines Objekts verwendet wird, this
bezieht es sich auf das Objekt , in dem es liegt. Beispielsweise,
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();
Ausgabe
(Name: "Jack", Alter: 25, Begrüßung: ƒ) Jack
Im obigen Beispiel this
bezieht sich auf das person
Objekt.
5. diese innere innere Funktion
Wenn Sie this
innerhalb einer inneren Funktion (innerhalb einer Methode) zugreifen , this
bezieht sich dies auf das globale Objekt. Beispielsweise,
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();
Ausgabe
(Name: "Jack", Alter: 25, Begrüßung: ƒ) 25 Fenster (…) undefiniert
Hier bezieht sich this
inside innerFunc()
auf das globale Objekt, da innerFunc()
es sich innerhalb einer Methode befindet.
Jedoch this.age
außerhalb innerFunc()
bezieht sich auf das person
Objekt.
6. diese Innenpfeilfunktion
this
Bezieht sich innerhalb der Pfeilfunktion auf den übergeordneten Bereich. Beispielsweise,
const greet = () => ( console.log(this); ) greet(); // Window (… )
Pfeilfunktionen haben keine eigenen this
. Wenn Sie this
innerhalb einer Pfeilfunktion verwenden, wird this
auf das übergeordnete Bereichsobjekt verwiesen. Beispielsweise,
const greet = ( name: 'Jack', // method sayHi () ( let hi = () => console.log(this.name); hi(); ) ) greet.sayHi(); // Jack
Hier bezieht sich this.name
die hi()
Funktion auf das greet
Objekt.
Sie können auch die Pfeilfunktion verwenden, um das Problem zu lösen, undefined
wenn eine Funktion in einer Methode verwendet wird (siehe Beispiel 5). Beispielsweise,
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();
Ausgabe
(Name: "Jack", Alter: 25, Begrüßung: ƒ) 25 (Name: "Jack", Alter: 25, Begrüßung: ƒ) 25
Hier innerFunc()
wird mit der Pfeilfunktion definiert. Es nimmt this
von seinem übergeordneten Bereich. Daher this.age
gibt 25 .
Wenn die Pfeilfunktion mit verwendet wird this
, bezieht sie sich auf den äußeren Bereich.
7. diese Inside-Funktion mit Strict Mode
Wann this
wird in einer Funktion mit striktem Modus verwendet, this
ist undefined
. Beispielsweise,
'use strict'; this.name = 'Jack'; function greet() ( // this refers to undefined console.log(this); ) greet(); // undefined
Hinweis : Wenn Sie this
eine Funktion mit striktem Modus verwenden, können Sie den JavaScript-Funktionsaufruf () verwenden.
Beispielsweise,
'use strict'; this.name = 'Jack'; function greet() ( console.log(this.name); ) greet.call(this); // Jack
Wenn Sie this
mit der call()
Funktion übergeben, greet()
wird dies als Methode des this
Objekts (in diesem Fall globales Objekt) behandelt.