window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(funktion () { var w = vindue if (w.LeadBooster) { console.warn('LeadBooster findes allerede') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() Forståelse af nøgleordet 'this' i JavaScript - The Codest
Codest
  • Om os
  • Serviceydelser
    • Udvikling af software
      • Frontend-udvikling
      • Backend-udvikling
    • Staff Augmentation
      • Frontend-udviklere
      • Backend-udviklere
      • Dataingeniører
      • Cloud-ingeniører
      • QA-ingeniører
      • Andet
    • Det rådgivende
      • Revision og rådgivning
  • Industrier
    • Fintech og bankvirksomhed
    • E-commerce
    • Adtech
    • Sundhedsteknologi
    • Produktion
    • Logistik
    • Biler
    • IOT
  • Værdi for
    • ADMINISTRERENDE DIREKTØR
    • CTO
    • Leder af levering
  • Vores team
  • Casestudier
  • Ved hvordan
    • Blog
    • Møder
    • Webinarer
    • Ressourcer
Karriere Tag kontakt til os
  • Om os
  • Serviceydelser
    • Udvikling af software
      • Frontend-udvikling
      • Backend-udvikling
    • Staff Augmentation
      • Frontend-udviklere
      • Backend-udviklere
      • Dataingeniører
      • Cloud-ingeniører
      • QA-ingeniører
      • Andet
    • Det rådgivende
      • Revision og rådgivning
  • Værdi for
    • ADMINISTRERENDE DIREKTØR
    • CTO
    • Leder af levering
  • Vores team
  • Casestudier
  • Ved hvordan
    • Blog
    • Møder
    • Webinarer
    • Ressourcer
Karriere Tag kontakt til os
Pil tilbage GÅ TILBAGE
2019-09-09
Udvikling af software

Forståelse af nøgleordet 'this' i JavaScript

Lukasz Kolko

I de fleste objektorienterede programmeringssprog har nøgleordet 'this' en særlig betydning. Normalt henviser det til det objekt, der er udførelseskonteksten (dvs. til den aktuelle forekomst af objektet). Vi bruger det for eksempel, når vi henviser til en objektegenskab indefra: Vi skriver this.propertyName, og så er konteksten objektet, og this henviser til det.

'dette' i JavaScript

I JavaScript er det mere kompliceret, fordi hvor dette refererer til, afhænger ikke kun af, hvordan funktionen er defineret, men også af, hvordan den kaldes.

Se her, hvordan dette fungerer afhængigt af påkaldelsessted og -form.

Global sammenhæng

Bruges i en global kontekst, der er bundet til det globale objekt, som f.eks. vindue i en webbrowser.

dette; // vindue

Inde i objektmetoden

Bruges inde i en objektmetode, der er bundet til det nærmeste omsluttende objekt. Objektet er den nye kontekst for dette nøgleord. Bemærk, at du ikke bør ændre funktion () til ES6-syntaks fun: () => this.context fordi det vil ændre konteksten.

const obj = {
  kontekst: "objekt",
  fun: function() {
    return this.context;
  }
};

obj.fun(); // objekt

I dette eksempel med et indlejret objekt, dette refererer stadig til sin nærmeste kontekst.

const nestedObj = {
  kontekst: "parent",
  child: {
    context: "child",
    fun: function() {
      return this.context;
    }
  }
};

nestedObj.child.fun(); // barn

Kontekstløs funktion

Bruges i en funktion, der ikke har nogen kontekst (ikke har noget objekt som overordnet), der er bundet til den globale kontekst, selv om funktionen er defineret inde i objektet.

Bemærk, at vi bruger var kontekst i stedet for let/const-kontekst fordi lade og konst. ændre den vedlagte kontekst for variablen. var er altid tættest på den globale udførelseskontekst. lade og konst. erklærer kun variabler i et lokalt blokområde.

var context = "global";

const obj = {
  kontekst: "objekt",
  funA: function() {
    funktion funB() {
      const context = "funktion";
      returnerer this.context;
    }
    return funB(); // påkaldt uden kontekst
  }
};

obj.funA(); // global

Inde i konstruktørfunktionen

Bruges i en funktion, der er konstruktør for det nye objekt, der er bundet til den.

var context = "global";

funktion Obj() {
  this.context = "Obj-kontekst";
}

const obj = new Obj();
obj.context; // Obj-kontekst

Inde i funktion defineret på prototypekæde

Bruges i en funktion, der er defineret i prototypekæden, til at skabe et objekt, der er bundet til den.

const ProtoObj = {
  fun: function() {
    return this.name;
  }
};

const obj = Object.create(ProtoObj);
obj.name = "foo";
obj.fun(); // foo

Indenfor opkald() og apply()-funktioner

opkald() og anvende() er JavaScript funktioner. Med dem kan et objekt bruge metoder, der tilhører et andet objekt. opkald() tager argumenter separat, hvor anvende() tager dem som et array.

dette er her bundet til en ny kontekst, der er ændret i opkald() og anvende() metoder.

const objA = {
  kontekst: "objA",
  fun: function() {
    console.log(this.context, arguments);
  }
};

const objB = {
  kontekst: "objB"
};

objA.fun(1, 2); // objA, [1, 2]
objA.fun.call(objB, 1, 2, 3); // objB, [1, 2, 3]
objA.fun.apply(objB, [1, 2, 3, 4]); // objB, [1, 2, 3, 4]

Inde i bind()-funktionen

bind() er også en JavaScript-metode. Den opretter en ny funktion, der har dette indstillet til den første parameter, der sendes til bind()**.**

const objA = {
  kontekst: "objA",
  fun: function() {
    console.log(this.context, arguments);
  }
};

const objB = {
  kontekst: "objB"
};

const fun = objA.fun.bind(objB, 1, 2);
fun(3, 4); // objB, [1, 2, 3, 4]

Inde i begivenhedsbehandlere

Bruges i enhver eventhandler (f.eks, addeventListener, onclick, attachEvent), er den bundet til det DOM-element, som begivenheden var knyttet til.

document.querySelector(".foo").addEventListener("click", function() {
  this; // henviser til div-elementet `foo`.
});

ES6-pilfunktion

Når den bruges i pilfunktionen, er den altid bundet til sit leksikalske område. I pilfunktionen kan du ikke tildele dette på nogen måde.

const globalArrowFunction = () => this;

globalArrowFunction(); // Vindue

const obj = {
  kontekst: "objekt",
  funA: () => this,
  funB: function() {
    return () => {
      return this.context;
    };
  }
};

obj.funA(); // vindue
obj.funB()(); // objekt
Fronented-rapport for 2020

Læs mere om det:

  • De største udfordringer med brugerdefineret softwareudvikling
  • Hvad er forskellen på et softwarehus og et it-bemandingsbureau?

Relaterede artikler

Udvikling af software

Byg fremtidssikrede webapps: Indsigt fra The Codest's ekspertteam

Oplev, hvordan The Codest udmærker sig ved at skabe skalerbare, interaktive webapplikationer med banebrydende teknologier, der leverer sømløse brugeroplevelser på tværs af alle platforme. Lær, hvordan vores ekspertise driver digital transformation og...

DENKODEST
Udvikling af software

Top 10 Letlands-baserede softwareudviklingsvirksomheder

Læs om Letlands bedste softwareudviklingsvirksomheder og deres innovative løsninger i vores seneste artikel. Find ud af, hvordan disse teknologiledere kan hjælpe med at løfte din virksomhed.

thecodest
Løsninger til virksomheder og scaleups

Grundlæggende om Java-softwareudvikling: En guide til succesfuld outsourcing

Udforsk denne vigtige guide til vellykket outsourcing af Java-softwareudvikling for at forbedre effektiviteten, få adgang til ekspertise og skabe projektsucces med The Codest.

thecodest
Udvikling af software

Den ultimative guide til outsourcing i Polen

Den voldsomme stigning i outsourcing i Polen er drevet af økonomiske, uddannelsesmæssige og teknologiske fremskridt, der fremmer it-vækst og et erhvervsvenligt klima.

TheCodest
Løsninger til virksomheder og scaleups

Den komplette guide til IT-revisionsværktøjer og -teknikker

IT-revisioner sikrer sikre, effektive og kompatible systemer. Lær mere om deres betydning ved at læse hele artiklen.

Codest
Jakub Jakubowicz CTO og medstifter

Tilmeld dig vores vidensbase, og hold dig opdateret om ekspertisen fra it-sektoren.

    Om os

    The Codest - International softwareudviklingsvirksomhed med tech-hubs i Polen.

    Storbritannien - Hovedkvarter

    • Kontor 303B, 182-184 High Street North E6 2JA
      London, England

    Polen - Lokale teknologiske knudepunkter

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Kraków
    • Hjerneambassaden, Konstruktorska
      11, 02-673 Warszawa, Polen

      Codest

    • Hjem
    • Om os
    • Serviceydelser
    • Casestudier
    • Ved hvordan
    • Karriere
    • Ordbog

      Serviceydelser

    • Det rådgivende
    • Udvikling af software
    • Backend-udvikling
    • Frontend-udvikling
    • Staff Augmentation
    • Backend-udviklere
    • Cloud-ingeniører
    • Dataingeniører
    • Andet
    • QA-ingeniører

      Ressourcer

    • Fakta og myter om at samarbejde med en ekstern softwareudviklingspartner
    • Fra USA til Europa: Hvorfor beslutter amerikanske startups sig for at flytte til Europa?
    • Sammenligning af Tech Offshore-udviklingsknudepunkter: Tech Offshore Europa (Polen), ASEAN (Filippinerne), Eurasien (Tyrkiet)
    • Hvad er de største udfordringer for CTO'er og CIO'er?
    • Codest
    • Codest
    • Codest
    • Privacy policy
    • Vilkår for brug af hjemmesiden

    Copyright © 2025 af The Codest. Alle rettigheder forbeholdes.

    da_DKDanish
    en_USEnglish de_DEGerman sv_SESwedish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek da_DKDanish