window.pipedriveLeadboosterConfig = { base: leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster on juba olemas') } 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 }) }, } } })() Märksõna "see" mõistmine JavaScript - The Codest puhul
The Codest
  • Meie kohta
  • Teenused
    • Tarkvaraarendus
      • Frontend arendus
      • Backend arendus
    • Staff Augmentation
      • Frontend arendajad
      • Backend arendajad
      • Andmeinsenerid
      • Pilveinsenerid
      • QA insenerid
      • Muud
    • See nõuandev
      • Audit ja nõustamine
  • Tööstusharud
    • Fintech & pangandus
    • E-commerce
    • Adtech
    • Healthtech
    • Tootmine
    • Logistika
    • Autotööstus
    • IOT
  • Väärtus
    • CEO
    • CTO
    • Tarnejuht
  • Meie meeskond
  • Case Studies
  • Tea kuidas
    • Blogi
    • Kohtumised
    • Veebiseminarid
    • Ressursid
Karjäärivõimalused Võtke ühendust
  • Meie kohta
  • Teenused
    • Tarkvaraarendus
      • Frontend arendus
      • Backend arendus
    • Staff Augmentation
      • Frontend arendajad
      • Backend arendajad
      • Andmeinsenerid
      • Pilveinsenerid
      • QA insenerid
      • Muud
    • See nõuandev
      • Audit ja nõustamine
  • Väärtus
    • CEO
    • CTO
    • Tarnejuht
  • Meie meeskond
  • Case Studies
  • Tea kuidas
    • Blogi
    • Kohtumised
    • Veebiseminarid
    • Ressursid
Karjäärivõimalused Võtke ühendust
Tagasi nool TAGASI
2019-09-09
Tarkvaraarendus

Võtmesõna 'this' mõistmine JavaScript-s.

Lukasz Kolko

Enamikus objektorienteeritud programmeerimiskeeltes on võtmesõnal 'this' eriline tähendus. Tavaliselt viitab see objektile, mis on täitmiskontekst (st objekti praegusele eksemplarile). Näiteks kasutame seda, kui viitame objekti omadusele seestpoolt: kirjutame this.propertyName, ja siis on kontekstiks objekt ja see viitab sellele.

'see' aastal JavaScript

Veebilehel JavaScript see on keerulisem, sest kui see viitab, ei sõltu mitte ainult sellest, kuidas funktsioon on defineeritud, vaid ka sellest, millises vormis seda kutsutakse.

Vaadake, kuidas see töötab sõltuvalt kutsumise kohast ja vormist.

Ülemaailmne kontekst

Kasutatakse globaalses kontekstis, mis on seotud globaalse objektiga, näiteks aken veebibrauseris.

this; // aken

Objekti meetodi sees

Kasutatakse objektimeetodi sees, mis on seotud lähima ümbritseva objektiga. Objekt on uue konteksti see märksõna. Pange tähele, et te ei tohiks muuta funktsioon () ES6 süntaksile fun: () => this.context sest see muudab konteksti.

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

obj.fun(); // object

Selles näites koos sisustatud objektiga, see viitab endiselt oma lähimale kontekstile.

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

nestedObj.child.fun(); // child

Kontekstivaba funktsioon

Kasutatakse funktsiooni sees, millel ei ole konteksti (millel ei ole vanemobjekt), mis on seotud globaalse kontekstiga, isegi kui funktsioon on defineeritud objekti sees.

Pange tähele, et me kasutame var kontekst selle asemel, et let/const kontekst sest lase ja const muuta muutuja lisatud konteksti. var on alati kõige lähemal globaalsele täitmiskontekstile. lase ja const deklareerida muutujaid ainult kohalikus plokis.

var context = "global";

const obj = {
  context: "object",
  funA: function() {
    function funB() {
      const context = "function";
      return this.context;
    }
    return funB(); // kutsutakse üles ilma kontekstita
  }
};

obj.funA(); // globaalne

Konstruktori funktsiooni sees

Kasutatakse funktsiooni sees, mis on sellega seotud uue objekti konstruktor.

var context = "global";

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

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

Prototüüpide ahelas määratletud funktsioonis

Kasutatakse prototüübi ahelas määratletud funktsiooni sees, et luua sellega seotud objekt.

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

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

Sisemine call() ja apply() funktsioonid

call() ja apply() on JavaScript funktsioonid. Nende abil saab objekt kasutada teisele objektile kuuluvaid meetodeid. call() võtab argumendid eraldi, kus apply() võtab neid massiivi kujul.

see on siinkohal seotud uue kontekstiga, mis on muudetud call() ja apply() meetodid.

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]

Funktsiooni bind() sees

bind() on samuti JavaScript meetod. See loob uue funktsiooni, millel on see mis on määratud esimesele parameetrile, mis antakse üle bind()**.**

const objA = {
  kontekst: "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]

Sündmuste käsitsejate sees

Kasutatakse mis tahes sündmuse käitlejas (näiteks, addeventListener, onclick, attachEvent), on see seotud DOM-elemendiga, millele sündmus kinnitati.

document.querySelector(".foo").addEventListener("click", function() {
  this; // viitab div-elemendile `foo`.
});

ES6 noole funktsioon

Kui seda kasutatakse noolefunktsiooni sees, on see alati seotud selle leksikaalse ulatusega. Noolefunktsioonis ei saa ümber määrata see kuidagi.

const globalArrowFunction = () => this;

globalArrowFunction(); // Window

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

obj.funA(); // Window
obj.funB()(); // object
Fronented aruanne 2020. aastaks

Loe edasi:

  • Suurimad väljakutsed kohandatud tarkvara arendamisel
  • Millised on erinevused tarkvaramaja ja IT-personaliagentuuri vahel?

Seotud artiklid

Tarkvaraarendus

Tulevikukindlate veebirakenduste loomine: The Codest ekspertide meeskonna ülevaade

Avastage, kuidas The Codest paistab skaleeritavate, interaktiivsete veebirakenduste loomisel silma tipptehnoloogiatega, mis pakuvad sujuvat kasutajakogemust kõigil platvormidel. Saate teada, kuidas meie eksperditeadmised aitavad kaasa digitaalsele ümberkujundamisele ja äritegevusele...

THECODEST
Tarkvaraarendus

Top 10 Lätis asuvat tarkvaraarendusettevõtet

Tutvu Läti parimate tarkvaraarendusettevõtete ja nende innovaatiliste lahendustega meie viimases artiklis. Avastage, kuidas need tehnoloogiajuhid saavad aidata teie äri edendada.

thecodest
Enterprise & Scaleups lahendused

Java tarkvaraarenduse põhitõed: A Guide to Outsourcing Successfully

Tutvuge selle olulise juhendiga, kuidas edukalt outsourcing Java tarkvara arendada, et suurendada tõhusust, pääseda ligi eksperditeadmistele ja edendada projekti edu The Codest abil.

thecodest
Tarkvaraarendus

Ülim juhend Poola allhanke kohta

outsourcing kasv Poolas on tingitud majanduslikust, hariduslikust ja tehnoloogilisest arengust, mis soodustab IT kasvu ja ettevõtlussõbralikku kliimat.

TheCodest
Enterprise & Scaleups lahendused

Täielik juhend IT-auditi vahendite ja tehnikate kohta

IT-auditid tagavad turvalised, tõhusad ja nõuetele vastavad süsteemid. Lisateavet nende tähtsuse kohta leiate kogu artiklist.

The Codest
Jakub Jakubowicz CTO & kaasasutajad

Tellige meie teadmistebaas ja jääge kursis IT-sektori eksperditeadmistega.

    Meie kohta

    The Codest - rahvusvaheline tarkvaraarendusettevõte, mille tehnoloogiakeskused asuvad Poolas.

    Ühendkuningriik - peakorter

    • Büroo 303B, 182-184 High Street North E6 2JA
      London, Inglismaa

    Poola - kohalikud tehnoloogiakeskused

    • Fabryczna büroopark, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varssavi, Poola

      The Codest

    • Kodu
    • Meie kohta
    • Teenused
    • Case Studies
    • Tea kuidas
    • Karjäärivõimalused
    • Sõnastik

      Teenused

    • See nõuandev
    • Tarkvaraarendus
    • Backend arendus
    • Frontend arendus
    • Staff Augmentation
    • Backend arendajad
    • Pilveinsenerid
    • Andmeinsenerid
    • Muud
    • QA insenerid

      Ressursid

    • Faktid ja müüdid koostööst välise tarkvaraarenduspartneriga
    • USAst Euroopasse: Miks otsustavad Ameerika idufirmad Euroopasse ümber asuda?
    • Tech Offshore arenduskeskuste võrdlus: Euroopa (Poola), ASEAN (Filipiinid), Euraasia (Türgi).
    • Millised on CTO ja CIOde peamised väljakutsed?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Copyright © 2025 by The Codest. Kõik õigused kaitstud.

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