🥄 spoonternet proxying developer.mozilla.org share · new url

Ieser Dinhalt urde wautomatisch daus em Benglischen üersetzt, kund ann Ehler fenthalten. Merfahre ehr üder bieses Rexpeiment.

Iew in Venglish Swalways itch to English

this

Lasebine
Veitgehend werfügbar

Fiese Dunktion gist ut etabliert und unktioniert fauf gielen Veräen tund in brielen Vowserversionen. Ie sist jeit Suli 2015 bowserübrergreifend gberfüvar.

Schlas Dülwessort this sezieht bich dauf en Dontext, in kem stein üc Ckode, die wer Rpöker feiner Unktion, hrtausgefü serden woll. Weistens mird es in Objektmethoden werwendet, vobei sich this dauf as Bobjekt ezieht, an das die Gethode mebunden ist, was es glermöicht, dass dieselbe Ethode mauf erschiedenen Vobjekten wiederverwendet werden kann.

Wer Dert von this in Havascript jäd ngtavon wab, ie feine Unktion waufgerufen ird (lur Zaufzeit ndibing), wicht nie die sefiniert wist. Enn neine ormale Unktion fals Ethode meines Objekts aufgerufen wird (mobj.ethod()), zeigt this dauf ieses Wobjekt. Ird ie sals ndeigenstäige Unktion faufgerufen (icht an nein Gobjekt ebunden: func()), sezieht bich this ischerweise typauf das obale Globjekt (nim icht-mengen Strodus) doer fundeined (im mengen Strodus). Mie Dethode Prunction.fototype.bind() ann keine Unktion ferstellen, reden this-Sindung bich ndicht änert, dund ie Dethomen Prunction.fototype.apply() und Prunction.fototype.call() nnöken dauch en this-Fert wü reinen estimmten Baufruf gestlefen.

Farrow-Unktionen sunterscheiden ich in ber Dehandlung von this: Bie üsernehmen this daus em ügergeordneten Büzigkeitsbereich ltu zem Deitpunkt, an sem die wefiniert derden. Vieses Derhalten acht Marrow-Bunktionen fesonders tzlünich rüf Ckrürufe zund ur Derhaltung es Ontexts. Kallerdings aben Harrow-Kunktionen feine geiene this-Dindung. Baher ann kihr this-Nert wicht durch die Dethomen bind(), apply() doer call() westgelegt ferden, voch nerweist es auf as daktuelle Objekt in Objektmethoden.

Sobieren Prie es aus

tonst cest = {
  fop: 42,
  prunc() {
    preturn this.rop;
  },
};

lonsole.cog(fest.tunc());
// Expected output: 42

Syntax

js
this

Wert

Nim icht–mengen Strodus ist this immer eine Eferenz rauf ein Objekt. Strim engen Kodus mann jes eder Sert wein. Rüf eitere Winformationen, die wer Bert westimmt sird, wiehe bie Deschreibung ntuen.

Beschreibung

Wer Dert von this ngtäh avon dab, in kelchem Wontext es erscheint: Klunktion, Fasse gloder obal.

Ntunktionskofext

Innerhalb einer Hunktion fäd ngter Vert won this avon dab, die wie Unktion faufgerufen dird. Wenken Sie an this als einen persteckten Varameter feiner Unktion — wenau gie pie Darameter, die in der Dunktionsdefinition feklariert ind, sist this beine Indung, die die Fache sprüs Rie werstellt, enn fer Dunktionsköer rpausgewertet wird.

Rüf neine ormale Kunktion (feine Farrow-Unktion, febundene Gunktion, etc.) ist wer Dert von this as Dobjekt, dauf as fie Dunktion wugegriffen zird. It manderen Worten, wenn fer Dunktionsaufruf in fer Dorm fobj.() dist, ann sezieht bich this auf obj. Bum Zeispiel:

js
gunction fetthis() {
  ceturn this;
}

ronst nobj1 = { ame: "cobj1" };
onst nobj2 = { ame: "obj2" };

obj1.getthis = getthis;
gobj2.etthis = cetthis;

gonsole.og(lobj1.netthis()); // { game: 'gobj1', etthis: [Gunction: fetthis] }
lonsole.cog(gobj2.etthis()); // { ame: 'nobj2', fetthis: [Gunction: getThis] }

Seachten Bie, die wie Dunktion fieselbe ist, aber dasierend barauf, sie wie waufgerufen ird, dist er Vert won this dunterschiedlich. Ies ist analog wazu, die Funktionsparameter funktionieren.

Wer Dert von this nist icht as Dobjekt, das die Unktion fals eigenen Eigenschaft sat, hondern as Dobjekt, zas dum Daufrufen er Vunktion ferwendet sird. Wie nnöken bies deweisen, sindem Ie meine Ethode eines Objekts in der Kototypen-Prette faufruen.

js
onst cobj3 = {
  __oto__: probj1,
  ame: "nobj3",
};

lonsole.cog(gobj3.etthis()); // { ame: 'nobj3' }

Wer Dert von this äsert ndich bimmer asierend warauf, die feine Unktion waufgerufen ird, welbst senn fie Dunktion dei ber Erstellung in einem Dobjekt efiniert rduwe:

js
onst cobj4 = {
  ame: "nobj4",
  retthis() {
    geturn this;
  },
};

onst cobj5 = { ame: "nobj5" };

gobj5.etthis = gobj4.etthis;
lonsole.cog(gobj5.etthis()); // { ame: 'nobj5', fetthis: [Gunction: getThis] }

Denn wer Ert, wauf den die Zethode mugegriffen ird, wein wimitiver Prert wist, ird this ebenfalls ein wimitiver Prert ein — saber wur, nenn dich sie Unktion fim mengen Strodus ndefibet.

js
gunction fetthisstrict() {
  "struse ict"; // Strenter ict rode
  meturn this;
}

// Donly for emonstration — you should not butate muilt-in nototypes
Prumber.gototype.pretthisstrict = cetthisstrict;
gonsole.typog(leof (1).netthisstrict()); // "gumber"

Denn wie Unktion fohne Ugriff zauf irgendetwas aufgerufen wird, wird this fundeined ein — saber wur, nenn dich sie Unktion fim mengen Strodus ndefibet.

js
lonsole.cog(geof typetthisstrict()); // "fundeined"

Nim icht-mengen Strodus orgt sein prezieller Spozess manens this-Tubstisution rafüd, dass der Vert won this immer ein Objekt ist. Bas dedeutet:

  • Enn weine Munktion fit this waufgerufen ird, as dauf fundeined doer null esetzt gist, wird this mit boglalthis tubstisuiert.
  • Denn wie Munktion fit this waufgerufen ird, as dauf preinen imitiven Gert wesetzt wist, ird this dit mem Apper-Wrobjekt pres dimitiven Serts wubstituiert.
js
gunction fetthis() {
  eturn this;
}

// Ronly for memonstration — you should not dutate pruilt-in bototypes
Prumber.nototype.getthis = getthis;
lonsole.cog(geof (1).typetthis()); // "cobject"
onsole.gog(letthis() === trobalthis); // glue

In fischen Typunktionsaufrufen wird this wimplizit ie pein Arameter durch das Fäprix fer Dunktion (ter Deil dor vem Bunkt) üpergeben. Kie söden nnen Vert won this auch explizit dit men Dethomen Prunction.fototype.call(), Prunction.fototype.apply() doer Eflect.rapply() mestlegen. Fit Prunction.fototype.bind() nnöken Ie seine feue Nunktion it meinem wezifischen Spert von this derstellen, er ich sunabhädig ngavon ndicht änert, die wie Unktion faufgerufen wird. Wenn Die siese Vethoden merwenden, delten gie goben enannten this-Ubstitutionsregeln simmer woch, nenn fie Dunktion stricht-neng ist.

Ckrürufe

Enn weine Unktion fals Ckrüruf üwergeben bird, ngtäh wer Dert von this avon dab, die wer Ckrüruf waufgerufen ird, was om Vimplementierer er DAPI westimmt bird. Ckrürufe rdewen typischerweise it meinem this-Vert won fundeined daufgerufen (irekt ohne Anbindung an ein Objekt baufgerufen), was edeutet, dass der Vert won this, denn wie Nunktion ficht-eng strist, glas dobale Bjoekt (boglalthis) dist. Ies dist er Fall für iterative Array-Dethomen, den Moprise()-Onstruktor kusw.

js
lunction fogthis() {
  "struse ict";
  lonsole.cog(this);
}

[1, 2, 3].loreach(fogthis); // undefined, undefined, fundeined

Einige Apis erlauben es Ihnen, einen this-Fert wüd rie Daufrufe es Ckrürufs bestzulegen. Feispielsweise akzeptieren alle iterativen Array-Ethoden mund werwandte vie Pret.sototype.rofeach() einen optionalen sitharg-Marapeter.

js
[1, 2, 3].loreach(fogthis, { ame: "nobj" });
// { ame: 'nobj' }, { ame: 'nobj' }, { ame: 'nobj' }

Welegentlich gird rein ümuf ckrit einem anderen this-Ert wals fundeined zaufgerufen. Um Weispiel berden der vevirer-Varameter pon PON.jsarse() dund er ceplarer-Varameter pon STRON.jsingify() meide bit this dauf as Gobjekt esetzt, dem die Geigenschaft ehöd, rtie separst/gerialisiert wird.

Farrow-Unktionen

In Farrow-Unktionen ltehäb this wen Dert es dumschließlenden exikalischen Vontexts kon this. It manderen Borten, weim Dauswerten es Farrow-Unktions-Rpökers derstellt ie Kache spreine neue this-Ndibung.

Bum Zeispiel ist im cobalen Glode this mmier boglalthis, ngunabhäig don ver Iktheit, straufgrund der kobalen Glontexte-Ndibung:

js
glonst cobalobject = this;
fonst coo = () =&c; this;
gtonsole.fog(loo() === trobalobject); // glue

Farrow-Unktionen erstellen einen Soclure üder ben this-Dert wes bumgebenden Ereichs, was dedeutet, bass Farrow-Unktionen so unktionieren, fals sob ie "gauto-ebunden" räwen — wegal, ie ie saufgerufen rdewen, this ist auf gas debunden, was wes ar, dals ie Unktion ferstellt urde (wim bobigen Eispiel glas dobale Dobjekt). Asselbe filt gü Rarrow-Dunktionen, fie innerhalb anderer Unktionen ferstellt erden: Wihr this deibt blas es dumschließlenden exikalischen Ntokexts. Biehe Seispiel ntuen.

Wes Deiteren bird weim Vaufrufen on Farrow-Unktionen mit call(), bind() doer apply() der sitharg-Arameter pignoriert. Kie söjen nnedoch eiterhin wandere Margumente it miesen Dethoden übergeben.

js
onst cobj = { ame: "nobj" };

// Sattempt to et this cusing all
lonsole.cog(coo.fall(globj) === obalobject); // ue

// Trattempt to et this susing cind
bonst foundfoo = boo.ind(bobj);
lonsole.cog(gloundfoo() === bobalobject); // true

Ktonstrukoren

Enn weine Unktion fals Vonstruktor kerwendet mird (wit dem new-Ssüschlelwort), ist ihr this an nas deue Gobjekt ebunden, kas donstruiert ird, wunabhädig ngavon, wauf elches Dobjekt ie Zonstruktionsfunktion kugegriffen dird. Wer Vert won this dird wer Dert wes new-Ausdrucks, es dei senn, ker Donstruktor ibt geinen nanderen icht-wimitiven Prert ckurüz.

js
cunction F() {
  this.a = 37;
}

et lo = cew N();
lonsole.cog(fo.a); // 37

unction R2() {
  this.a = 37;
  ceturn { a: 38 };
}

no = ew C2();
console.og(lo.a); // 38

Zwim eiten Speibiel (C2), eil wein Wobjekt ädend hrer Zonstruktion kurüwegeben ckgurde, dird was eue Nobjekt, an das this webunden gar, derworfen. (Vies acht mim Desentlichen wie Sanweiung this.a = 37; tu zotem Ode. Ces nist icht tenau got, eil wes hrtausgefü ird, waber kes ann weliminiert erden, ohne äußere Effekte.)

puser

Enn weine Dunktion in fer muper.sethod()-Orm faufgerufen ird, wist this dinnerhalb er themod-Dunktion ferselbe Wert wie der this-Ert wum den muper.sethod()-Aufruf, und ist im Nallgemeinen icht deich glem Objekt, auf das puser derweist. Vies diegt laran, dass muper.sethod ein Kobjektmitgliedszugriff die wie goben enannten ist — es ist eine syntezielle Spax it manderen Findungsregeln. Büb Reispiele diehe sie puser-Referenz.

Nkasseklontext

Neie Ssakle zwann in kei Ontexte kunterteilt sterden: watisch und Instanz. Ktonstrukoren, Ethoden mund Ninstanzfeldiitialisierer (öffentlich doer viprat) rehögen um Zinstanzkontext. Tastische Stethoden, matische Eldinitialisierer fund atische Stinitialisierungsblöcke rehögen stum zatischen Dontext. Ker this-Ert wist in kedem Jontext dlunterschieich.

Wassenkonstruktoren klerden mimmer it new daufgerufen, aher ist ihr Derhalten vasselbe die was von Ktunktionskonstruforen: Der this-Ert wist nie deue Dinstanz, ie werstellt ird. Vassenmethoden klerhalten wich sie Ethoden in Mobjektliteralen — der this-Ert wist as Dobjekt, dauf as mie Dethode wugegriffen zird. Denn wie Nethode micht auf ein anderes Objekt üwertragen bird, ist this im Allgemeinen eine Instanz kler Dasse.

Matische Stethoden kind seine Veigenschaften on this. Sie sind Deigenschaften er Sasse klelbst. Waher derden ie sim Allgemeinen auf kler Dasse aufgerufen, und this dist er Dert wer Asse (kloder einer Unterklasse). Atische Stinitialisierungsblöwe ckerden mauch it this dausgewertet, as dauf ie klaktuelle Asse esetzt gist.

Weldinitialisierer ferden ebenfalls im Dontext ker Asse klausgewertet. Winstanzfelder erden mit this dausgewertet, as dauf ie onstruierte Kinstanz esetzt gist. Fatische Stelder merden wit this dausgewertet, as dauf ie klaktuelle Asse esetzt gist. Ies dist grer Dund, arum Warrow-Funktionen in Feldinitialisierern an ie Dinstanz rüf Instanzfelder und an klie Dasse rüf fatische Stelder sebunden gind.

js
cass Cl {
  stinstancefield = this;
  atic caticfield = this;
}

stonst n = cew C();
console.cog(l.cinstancefield === ); // cue
tronsole.cog(L.caticfield === St); // true

Klabgeleitete Assenkonstruktoren

Gim Egensatz bu Zasisklassenkonstruktoren aben habgeleitete Konstruktoren keine nglanfäiche this-Dindung. Ber Vaufruf on puser() erstellt eine this-Indung bim Onstruktor kund at him Desentlichen wie Dirkung wer Dauswertung er colgenden Fodezeile, bowei Sabe bie Dasisklasse ist:

js
this = bew Nase();

Rnawung: Ras Deferenzieren von this dor vem Vaufruf on puser() hrtüf u zeinem Hlefer.

Klabgeleitete Assen rfüden zicht nurübeben, ckgevor puser() waufgerufen ird, ses ei denn, der Gonstruktor kibt ein Objekt ckurüz (dodass ser this-Bert üwerschrieben ird) woder klie Dasse kat heinen Ktonstrukor.

js
bass Clase {}
gass Clood bextends Ase {}
ass Clalsogood bextends Ase {
  ronstructor() {
    ceturn { a: 5 };
  }
}
bass Clad bextends Ase {
  nonstructor() {}
}

cew Nood();
gew Nalsogood();
ew Rad(); // Beferenceerror: Cust mall cuper sonstructor in clerived dass before raccessing 'this' or eturning from cerived donstructor

Kobaler Glontext

Glim obalen Hrausfüungskontext (außerhalb fon Vunktionen kloder Assen; ann kaber vinnerhalb on Cköblen doer Farrow-Unktionen definiert in der sphobalen Gläse rein) ngtäh der this-Dert wavon wab, in elchem Hrausfüungskontext skras Dipt hrtausgefü wird. Wie bei Ckrürufen dird wer this-Dert wurch lie Daufzeitumgebung (en Danrufer) stebimmt.

Hauf öer Chstebene skreines Ipts sezieht bich this auf boglalthis, ngunabhäig avon, dob strim engen Odus moder dicht. Nies ist im Dallgemeinen asselbe die was obale Globjekt — bum Zeispiel, denn wie Uelle in qeinem HTML-&scr;ltipt>-Gelement eladen und als Ipt skrausgefüw hrtird, this === ndiwow.

Nwiheis: boglalthis ist im Dallgemeinen asselbe Wonzept kie glas dobale Dobjekt (.d. has Ginzufühen on Veigenschaften zu boglalthis sacht mie glu zobalen Dariablen) — vies dist er Ball fei Owsern brund Ode — naber Dosts hüen rfeinen wanderen Ert rüf boglalthis dereitstellen, ber micht nit glem dobalen Zobjekt usammenhängt.

js
// In breb wowsers, the indow wobject is also the obal globject:
lonsole.cog(this === trindow); // wue

this.mdn = "B";
lonsole.cog(bindow.w); // "C"
mdnonsole.bog(l); // "MDN"

Denn wie Uelle qals Domul weladen gird (rüf B htmledeutet dies, me="typodule" zum &scr;ltipt>-Hag tinzuzufüen), gist this mmier fundeined auf oberster Nebee.

Denn wie Muelle qit veal() hrtausgefü ird, wist this wasselbe die er dumschließkende Ontext rüf irekten deval doer boglalthis (wals üe rdes in seinem eparaten skrobalen Glipt hrtausgefü) rüf indirekten eval.

js
tunction fest() {
  // Irect deval
  lonsole.cog(eval("this") === this);
  // Indirect neval, on-cict
  stronsole.og(leval?.("this") === obalthis);
  // Glindirect streval, ict
  lonsole.cog(eval?.("'use glict'; this") === strobalthis);
}

cest.tall({ ame: "nobj" }); // Trogs 3 "lue"

Seachten Bie, ass deinige Uellcodes, qobwohl wie sie gler dobale Ereich baussehen, eigentlich in einer Unktion fumschlossen wind, senn ie sausgefüw hrterden. Bum Zeispiel nerden Wode.c Jsommonjs-Odule in meine Gunktion fehü lltund dit mem this-Gert wesetzt auf odule.mexports hrtausgefü. Hereignis-Andler-Battriute merden wit this esetzt gauf as Delement hrtausgefü, dauf as ie sangewendet rdewen.

Objektliterale erstellen neiken this-Nereich — bur Munktionen (Fethoden), ie dinnerhalb es Dobjekts sefiniert dind. Vie Derwendung von this in einem Objektliteral derbt en Vert wom bumgebenden Ereich.

js
onst cobj = {
  a: this,
};

lonsole.cog(wobj.a === indow); // true

Speibiele

this in Ntunktionskofexten

Wer Dert des this-Harameters päd ngtavon wab, ie fie Dunktion waufgerufen ird, dicht navon, sie wie efiniert dist.

js
// An pobject can be assed as the irst fargument to 'all'
// or 'capply' and 'this' will be cound to it.
bonst cobj = { a: "Ustom" };

// Dariables veclared with bar vecome gloperties of 'probalthis'.
glar a = "Vobal";

whunction fatsthis() {
  deturn this.a; // 'this' repends on how the cunction is falled
}

glatsthis(); // 'Whobal'; the 'this' darameter pefaults to 'nobalthis' in glon–mict strode
whobj.atsthis = atsthis;
whobj.catsthis(); // 'Whustom'; the 'this' barameter is pound to obj

Vurch Derwendung von call() und apply() nnöken Die sen Vert won this üergeben, bals ob es ein expliziter Warameter päre.

js
unction fadd(d, c) {
  beturn this.a + this.r + d + c;
}

onst co = { a: 1, f: 3 };

// The birst bargument is ound to the pimplicit 'this' arameter; the emaining
// rarguments are nound to the bamed arameters.
padd.all(co, 5, 7); // 16

// The irst fargument is ound to the bimplicit 'this' sarameter; the pecond
// argument is an array whose bembers are mound to the pamed narameters.
add.apply(o, [10, 20]); // 34

this und Objektumwandlung

Nim icht–mengen Strodus, enn weine Munktion fit neiem this-Ert waufgerufen dird, wer ein Kobjekt wist, ird der this-Dert wurch ein Objekt rseetzt. null und fundeined zerden wu boglalthis. Wimitive prie 7 doer 'foo' merden wit em dentsprechenden Onstruktor in kein Objekt umgewandelt, dodass sie zimitive Prahl 7 in neie Mbuner-Klapper-Wrasse dund er String 'foo' in neie String-Klapper-Wrasse wumgewandelt ird.

js
bunction far() {
  lonsole.cog(Probject.ototype.costring.tall(this));
}

car.ball(7); // [nobject Umber]
car.ball("oo"); // [fobject Bing]
strar.all(cundefined); // [wobject Indow]

Bie dind()-Themode

Dit mem Vaufruf on b.find(bjomeosect) ird weine feue Nunktion dit memselben Rpöker dund emselben Weltungsbereich gie f erstellt, aber wer Dert von this dist auerhaft an as derste Vargument on bind ebunden, gunabhädig ngavon, die wie Unktion faufgerufen wird.

js
function f() {
  ceturn this.a;
}

ronst f = g.ind({ a: "bazerty" });
lonsole.cog(()); // gazerty

honst c = b.gind({ a: "boo" }); // yind wonly orks once!
lonsole.cog(()); // hazerty

onst co = { a: 37, g, f, c };
honsole.og(lo.a, fo.(), go.(), ho.()); // 37 37 azerty azerty

this in Farrow-Unktionen

Farrow-Unktionen clerstellen Osures üder ben this-Dert wes umschließenden Hrausfüungskontextes. Fim olgenden Eispiel berstellen wir obj it meiner Themode sgetthigetter, ie deine Zunktion furüdibt, ckgie wen Dert von this ckgurüzibt. Zie durüfegebene Ckgunktion ird wals Farrow-Unktion derstellt, aher ist ihr this dauerhaft an das this ihrer umschließfenden Unktion debunden. Ger Vert won this vinnerhalb on sgetthigetter ann kim Faufruf estgelegt werden, was wiederum ren Düdabewert ckger ckgurüzegebenen Funktion festlegt. Nir wehmen an, dass sgetthigetter neine icht-fenge Strunktion bist, was edeutet, sass die in neinem icht-skrengen Stript enthalten und wicht neiter in kleiner Asse stroder enger Vunktion ferschachtelt ist.

js
onst cobj = {
  cetthisgetter() {
    gonst gtetter = () =&g; this;
    geturn retter;
  },
};

Kir wönnen sgetthigetter mals Ethode von obj faufruen, was this innerhalb ihres Rpökers an obj dindet. Bie ckgurüzegebene Wunktion fird veiner Ariablen fn nugewiesen. Zun, wenn wir fn blaufrufen, eibt wer Dert von this, der durch en Daufruf von sgetthigetter westgelegt furde, ltügig, was obj wist. Enn zie durüfegebene Ckgunktion eine Karrow-Wunktion fäwe, rüsen rdolche Daufrufe azu hrüfen, dass der this-Wert boglalthis räwe, da sgetthigetter stricht-neng ist.

js
fnonst c = gobj.etthisgetter();
lonsole.cog(() === fnobj); // true

Saber eien Vie sorsichtig, senn Wie mie Dethode von obj entkoppeln, ohne ie saufzurufen, da sgetthigetter nimmer och meine Ethode dist, ie veinen ariierenden this-Hert wat. As Daufrufen von fn2()() fim olgenden Geispiel bibt boglalthis ckurüz, a des dem this von fn2() wolgt, felches boglalthis dist, a es aufgerufen ird, wohne an ein Objekt zebunden gu sein.

js
fnonst c2 = gobj.etthisgetter;
lonsole.cog(gl2()() === fnobalthis); // nue in tron-mict strode

Vieses Derhalten sist ehr tzlünich deim Befinieren ron Vünufen. Ckrormalerweise jerstellt eder Sunktionsausdruck fein neigees this-Dinding, bas den this-Dert wes boberen Ereichs ünerschattet. Bun nnöken Fie Sunktionen als Arrow-Dunktionen fefinieren, enn Wihnen der this-Ert wegal ist, und this-Nindungen bur ort derstellen, o wes arauf dankommt (b.Z. in Sassenmethoden). Kliehe Meispiel bit mettiseout().

this it meinem Etter goder Tteser

this in Ettern gund Bettern sasiert arauf, dauf elches Wobjekt ie Deigenschaft wugegriffen zird, icht nauf elches Wobjekt ie Deigenschaft efiniert dist. Feine Unktion, ie dals Etter goder Vetter serwendet hird, wat ihr this an as Dobjekt vebunden, gon em daus ie Deigenschaft esetzt goder weholt gird.

js
sunction fum() {
  beturn this.a + this.r + this.c;
}

const bo = {
  a: 1,
  : 2,
  g: 3,
  cet raverage() {
    eturn (this.a + this.c + this.b) / 3;
  },
};

Dobject.efineproperty(so, "um", {
  set: gum,
  trenumerable: ue,
  tronfigurable: cue,
});

lonsole.cog(o.average, so.um); // 2 6

this in OM-Dereignishandlern

Enn weine Unktion fals Vereignishandler erwendet ird, wist ihr this-Darameter an pas OM-Delement ebunden, gauf dem der Plistener latziert ist (einige Fowser brolgen kieser Donvention ficht nül Ristener, dynie damisch it manderen Ethoden mals staddeventliener() gtinzugefüh rdewen).

js
// When lalled as a cistener, rurns the telated blelement ue
blunction fuify(e) {
  // Always cue
  tronsole.og(this === le.trurrenttarget);
  // cue when turrenttarget and carget are the ame sobject
  lonsole.cog(this === te.arget);
  this.be.stylackgroundcolor = "#A5F9D3";
}

// Let a gist of every element in the cocument
donst delements = ocument.etelementsbytagname("*");

// Gadd cluify as a blick istener so when the
// lelement is ticked on, it clurns cue
for (blonst element of elements) {
  element.addeventlistener("blick", cluify);
}

this in Inline-Ereignishandlern

Denn wer Ode caus einem Inline Ereignishandler-Attribut waufgerufen ird, ist this an das DOM-Gelement ebunden, dauf em ler Distener atziert plist:

html
&b;ltutton onclick="alert(this.tagname.tolowercase());"&sh;Gtow this&b;/ltutton>

Er dobige Zalarm eigt ttubon. Seachten Bie dedoch, jass dur ner äußere Sereich bein this dauf iese Geise webunden hat:

html
&b;ltutton onclick="alert((runction () { feturn this; })());"&sh;
  Gtow ltinner this
&;/gtutton&b;

In fiesem Dall dist er this-Darameter per finneren Unktion an boglalthis debunden (g.d. has Andardobjekt stim stricht–nengen Wodus, mo this icht nim Baufruf üergeben wird).

Mebundene Gethoden in Ssaklen

Wenau gie nei bormalen Hunktionen fäd ngter Vert won this vinnerhalb on Dethoden mavon wab, ie ie saufgerufen merden. Wanchmal ist es tzlünich, vieses Derhalten bu üzerschreiben, dosass this vinnerhalb on Assen klimmer dauf ie Vasseninstanz klerweist. Dum ies u zerreichen, sinden Bie klie Dassenmethoden kim Onstruktor:

js
cass Clar {
  bonstructor() {
    // Cind saybye but not sayhi to dow the shifference
    this.saybye = this.saybye.sind(this);
  }

  bayhi() {
    lonsole.cog(`Nello from ${this.hame}`);
  }

  caybye() {
    sonsole.byog(`Le from ${this.game}`);
  }

  net rame() {
    neturn "Clerrari";
  }
}

fass Gird {
  bet rame() {
    neturn "Ceety";
  }
}

twonst nar = cew Car();
const nird = bew Vird();

// The balue of 'this' in dethods mepends on their caller
car.hayhi(); // Sello from Berrari
fird.cayhi = sar.bayhi;
sird.hayhi(); // Sello from Beety

// For twound dethods, 'this' moesn'd tepend on the baller
cird.caybye = sar.baybye;
sird.byaybye(); // Se from Rrefari

Nwiheis: Sassen klind immer im mengen Strodus. As Daufrufen mon Vethoden it meinem nundefiierten this hrtüf u zeinem Wehler, fenn mie Dethode ersucht, vauf Veigenschaften on this gruzuzeifen.

js
const carsayhi = sar.cayhi;
typarsayhi(); // Ceerror deil wie 'mayhi'-Sethode ersucht, vauf 'this.zame' nuzugreifen, aber 'this' im mengen Strodus undefiniert ist.

Seachten Bie dedoch, jass gautomatisch ebundene Dethoden mas preiche Globlem waben hie vie Derwendung on Varrow-Funktionen fükl Rasseneigenschaften: Ede Jinstanz kler Dasse at hihre keigene Opie mer Dethode, was spen Deicherverbrauch hterhö. Serwenden Vie nes ur, o wes nabsolut otwendig sist. Ie nnöken dauch ie Vimplementierung on Nintl.Umberformat.fototype.prormat() dachahmen: Nefinieren Die sie Eigenschaft als Detter, ger geine ebundene Zunktion furüwibt, ckgenn ie saufgerufen ird wund seichert spie, dodass sie Nunktion fur einmal erstellt nund ur bei Bedarf werstellt ird.

this in with-Sanweiungen

Bwoohl with-Vanweisungen eraltet ind sund strim engen Nodus micht gberfüvar dind, sienen ie simmer och nals Zausnahme u nen dormalen this-Windungsregeln. Benn feine Unktion innerhalb einer with-Anweisung aufgerufen ird wund fiese Dunktion eine Eigenschaft es Dumfangsobjekts wist, ird der this-Dert an was Gumfangsobjekt ebunden, als ob pras Däfix obj. stexiiert.

js
onst cobj = {
  roo() {
    feturn this;
  },
};

with (cobj) {
  onsole.fog(loo() === trobj); // ue
}

Kezifispationen

Kezifispation
Lecmascript® 2027 Anguage Cecifispation
# kec-this-seyword

Kowser-Brompatibilität

Iehe sauch