JavaScript this Keyword
- Forrige side JS-strict mode
- Næste side JS-pil-funktioner
Eksempel
var person = { firstName: "Bill", lastName : "Gates", id : 678, fullName : function() { return this.firstName + " " + this.lastName; } };
Hvad er this?
JavaScript this
nøgleordet betyder det objekt, det tilhører.
det har forskellige værdier afhængigt af dets brugsmåde:
- i metoden
this
betyder ejersobjektet. - i ensomhed,
this
betyder den globale objekt. - i funktionen
this
betyder den globale objekt. - i funktionen, i strengt kastemodus,
this
er undefined. - i eventet
this
betyder det element, der modtager eventet.
som call()
og apply()
Denne metode kan bruge this til hvilken som helst objekt.
this i metoden
i objektmetoderthis
betyder metodens "ejer".
I eksemplet øverst på denne side,this
betyder person-objektet.
person-objektet er ejeren af fullName-metoden.
fullName : function() { return this.firstName + " " + this.lastName; }
almindelig this
Når brugt alene, er ejerens global objekt, derfor this
betyder den globale objekt.
I browser-vinduet, er den globale objekt [object Window]
:
Eksempel
var x = this;
I strengt kastemodus, hvis brugt alene, this
betyder den globale objekt [object Window]
:
Eksempel
"use strict"; var x = this;
this i funktionen (standard)
i JavaScript-funktioner, er funktionens ejer standardbundet this
。
derfor, i funktionen,this
betyder den globale objekt [object Window]
。
Eksempel
function myFunction() { return this; }
this i funktionen (strengt kastemodus)
JavaScripts strengt kastemodus tillader ikke standardbinding.
derfor, når det bruges i en funktion, i strengt kastemodus,this
er ikke defineret (undefined
)。
Eksempel
"use strict"; function myFunction() { return this; }
this i eventhåndtereren
I HTML eventhåndterere,this
betyder den HTML-element, der modtager dette event:
Eksempel
<button onclick="this.style.display='none'"> Klik for at slette mig! </button>
objektmetoder
I dette eksempel,this
er person-objekt (person-objekt er funktionens "ejer"):
Eksempel
var person = { firstName : "Bill", lastName : "Gates", id : 678, myFunction : function() { return this; } };
Eksempel
var person = { firstName: "Bill", lastName : "Gates", id : 678, fullName : function() { return this.firstName + " " + this.lastName; } };
på anden sidethis.firstName betyder thisaf (person) objektets firstName egenskaber.
eksplicit funktionbindning
call()
og apply()
metoder er prædefinerede JavaScript-metoder.
de kan begge bruges til at kalde en objektmetode med et andet objekt som parameter.
du kan læse mere om call()
og apply()
flere detaljer.
i nedenstående eksempel, når person2 bruges som parameter til at kalde person1.fullName,this
vil referere til person2, selvom det er person1s metode:
Eksempel
var person1 = { fullName: function() { return this.firstName + " " + this.lastName; } } var person2 = { firstName: "Bill", lastName: "Gates", } person1.fullName.call(person2); // vil returnere "Bill Gates"
- Forrige side JS-strict mode
- Næste side JS-pil-funktioner