window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', versjon: 2, } ;(function () { var w = vindu if (w.LeadBooster) { console.warn('LeadBooster finnes 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 av nøkkelordet "this" i JavaScript - The Codest
The Codest
  • Om oss
  • Tjenester
    • Programvareutvikling
      • Frontend-utvikling
      • Backend-utvikling
    • Staff Augmentation
      • Frontend-utviklere
      • Backend-utviklere
      • Dataingeniører
      • Ingeniører i skyen
      • QA-ingeniører
      • Annet
    • Det rådgivende
      • Revisjon og rådgivning
  • Industrier
    • Fintech og bankvirksomhet
    • E-commerce
    • Adtech
    • Helseteknologi
    • Produksjon
    • Logistikk
    • Bilindustrien
    • IOT
  • Verdi for
    • ADMINISTRERENDE DIREKTØR
    • CTO
    • Leveransesjef
  • Vårt team
  • Casestudier
  • Vet hvordan
    • Blogg
    • Møter
    • Webinarer
    • Ressurser
Karriere Ta kontakt med oss
  • Om oss
  • Tjenester
    • Programvareutvikling
      • Frontend-utvikling
      • Backend-utvikling
    • Staff Augmentation
      • Frontend-utviklere
      • Backend-utviklere
      • Dataingeniører
      • Ingeniører i skyen
      • QA-ingeniører
      • Annet
    • Det rådgivende
      • Revisjon og rådgivning
  • Verdi for
    • ADMINISTRERENDE DIREKTØR
    • CTO
    • Leveransesjef
  • Vårt team
  • Casestudier
  • Vet hvordan
    • Blogg
    • Møter
    • Webinarer
    • Ressurser
Karriere Ta kontakt med oss
Pil tilbake GÅ TILBAKE
2019-09-09
Programvareutvikling

Forstå nøkkelordet 'this' i JavaScript

Lukasz Kolko

I de fleste objektorienterte programmeringsspråk har nøkkelordet "this" en spesiell betydning. Vanligvis refererer det til objektet som er utførelseskonteksten (dvs. til den aktuelle forekomsten av objektet). Vi bruker for eksempel dette når vi refererer til en objektegenskap innenfra: Vi skriver this.propertyName, og da er konteksten objektet, og this refererer til det.

"dette i JavaScript

I JavaScript er det mer komplisert fordi hvor dette refererer til, avhenger ikke bare av hvordan funksjonen er definert, men også av hvordan den kalles.

Ta en titt på hvordan dette fungerer avhengig av påkallingssted og -form.

Global kontekst

Brukes i en global kontekst bundet til det globale objektet, som vindu i en nettleser.

dette; // vindu

Inne i objektmetoden

Brukes inne i en objektmetode som er bundet til det nærmeste omsluttende objektet. Objektet er den nye konteksten til dette nøkkelord. Merk at du ikke bør endre funksjon () til ES6-syntaks fun: () => this.context fordi det vil endre konteksten.

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

obj.fun(); // objekt

I dette eksempelet med et nestet objekt, dette refererer fortsatt til sin nærmeste kontekst.

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

nestedObj.child.fun(); // child

Kontekstløs funksjon

Brukes i en funksjon som ikke har noen kontekst (ikke har noe objekt som overordnet) bundet til den globale konteksten, selv om funksjonen er definert inne i objektet.

Merk at vi bruker var kontekst i stedet for let/const-kontekst fordi la og konst endre den vedlagte konteksten for variabelen. var er alltid nærmest den globale kjøringskonteksten. la og konst deklarere variabler bare i et lokalt blokkområde.

var context = "global";

const obj = {
  kontekst: "objekt",
  funA: function() {
    funksjon funB() {
      const context = "function";
      return this.context;
    }
    return funB(); // påkalt uten kontekst
  }
};

obj.funA(); // global

Inne i konstruktørfunksjonen

Brukes i en funksjon som er konstruktøren for det nye objektet som er bundet til den.

var context = "global";

function Obj() {
  this.context = "Obj context";
}

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

Inne i funksjon definert på prototypkjeden

Brukes i en funksjon som er definert i prototypkjeden for å opprette et objekt som er bundet til den.

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

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

På innsiden call() og apply()-funksjonene

call() og apply() er JavaScript funksjoner. Med disse kan et objekt bruke metoder som tilhører et annet objekt. call() tar argumenter separat der apply() tar dem som en matrise.

dette er her bundet til ny kontekst endret i call() og apply() metoder.

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

const objB = {
  context: "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]

Inne i bind()-funksjonen

bind() er også en JavaScript-metode. Den oppretter en ny funksjon som vil ha dette satt til den første parameteren som sendes til bind()**.**

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

const objB = {
  context: "objB"
};

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

Inne i hendelsesbehandlere

Brukes i enhver hendelsesbehandler (for eksempel, addeventListener, onclick, attachEvent), er den bundet til DOM-elementet som hendelsen var knyttet til.

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

ES6-pilfunksjon

Når den brukes inne i pilfunksjonen, er den alltid bundet til det leksikalske omfanget. I pilfunksjonen kan du ikke tilordne dette på noen som helst måte.

const globalArrowFunction = () => this;

globalArrowFunction(); // Vindu

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

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

Les mer om dette:

  • De største utfordringene med tilpasset programvareutvikling
  • Hva er forskjellen mellom et programvarehus og et IT-bemanningsbyrå?

Relaterte artikler

Programvareutvikling

Bygg fremtidssikre webapper: Innsikt fra The Codests ekspertteam

Oppdag hvordan The Codest utmerker seg når det gjelder å skape skalerbare, interaktive webapplikasjoner med banebrytende teknologi som gir sømløse brukeropplevelser på tvers av alle plattformer. Finn ut hvordan ekspertisen vår driver digital transformasjon og...

THECODEST
Programvareutvikling

Topp 10 Latvia-baserte programvareutviklingsselskaper

I vår nyeste artikkel kan du lese mer om Latvias beste programvareutviklingsselskaper og deres innovative løsninger. Oppdag hvordan disse teknologilederne kan bidra til å løfte virksomheten din.

thecodest
Løsninger for bedrifter og oppskalering

Grunnleggende om Java-programvareutvikling: En guide til vellykket outsourcing

Utforsk denne viktige veiledningen om vellykket outsourcing av Java-programvareutvikling for å øke effektiviteten, få tilgang til ekspertise og drive frem prosjektsuksess med The Codest.

thecodest
Programvareutvikling

Den ultimate guiden til outsourcing i Polen

Den kraftige økningen i outsourcing i Polen er drevet av økonomiske, utdanningsmessige og teknologiske fremskritt, noe som fremmer IT-vekst og et forretningsvennlig klima.

TheCodest
Løsninger for bedrifter og oppskalering

Den komplette guiden til verktøy og teknikker for IT-revisjon

IT-revisjoner sørger for sikre, effektive og kompatible systemer. Les hele artikkelen for å lære mer om viktigheten av dem.

The Codest
Jakub Jakubowicz CTO og medgrunnlegger

Abonner på vår kunnskapsbase og hold deg oppdatert på ekspertisen fra IT-sektoren.

    Om oss

    The Codest - Internasjonalt programvareutviklingsselskap med teknologisentre i Polen.

    Storbritannia - Hovedkvarter

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

    Polen - Lokale teknologisentre

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

      The Codest

    • Hjem
    • Om oss
    • Tjenester
    • Casestudier
    • Vet hvordan
    • Karriere
    • Ordbok

      Tjenester

    • Det rådgivende
    • Programvareutvikling
    • Backend-utvikling
    • Frontend-utvikling
    • Staff Augmentation
    • Backend-utviklere
    • Ingeniører i skyen
    • Dataingeniører
    • Annet
    • QA-ingeniører

      Ressurser

    • Fakta og myter om samarbeid med en ekstern programvareutviklingspartner
    • Fra USA til Europa: Hvorfor velger amerikanske oppstartsbedrifter å flytte til Europa?
    • Sammenligning av Tech Offshore Development Hubs: Tech Offshore Europa (Polen), ASEAN (Filippinene), Eurasia (Tyrkia)
    • Hva er de største utfordringene for CTO-er og CIO-er?
    • The Codest
    • The Codest
    • The Codest
    • Retningslinjer for personver
    • Vilkår for bruk av nettstedet

    Opphavsrett © 2025 av The Codest. Alle rettigheter forbeholdt.

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