The Codest
  • O nás
  • Služby
    • Vývoj softwaru
      • Vývoj frontendů
      • Vývoj backendu
    • Staff Augmentation
      • Vývojáři frontendů
      • Vývojáři backendu
      • Datoví inženýři
      • Cloudoví inženýři
      • Inženýři QA
      • Další
    • To Advisory
      • Audit a poradenství
  • Odvětví
    • Fintech a bankovnictví
    • E-commerce
    • Adtech
    • Healthtech
    • Výroba
    • Logistika
    • Automobilový průmysl
    • IOT
  • Hodnota za
    • CEO
    • CTO
    • Manažer dodávek
  • Náš tým
  • Case Studies
  • Vědět jak
    • Blog
    • Setkání
    • Webové semináře
    • Zdroje
Kariéra Spojte se s námi
  • O nás
  • Služby
    • Vývoj softwaru
      • Vývoj frontendů
      • Vývoj backendu
    • Staff Augmentation
      • Vývojáři frontendů
      • Vývojáři backendu
      • Datoví inženýři
      • Cloudoví inženýři
      • Inženýři QA
      • Další
    • To Advisory
      • Audit a poradenství
  • Hodnota za
    • CEO
    • CTO
    • Manažer dodávek
  • Náš tým
  • Case Studies
  • Vědět jak
    • Blog
    • Setkání
    • Webové semináře
    • Zdroje
Kariéra Spojte se s námi
Šipka zpět ZPĚT
2019-09-09
Vývoj softwaru

Porozumění klíčovému slovu 'this' v JavaScript

Lukasz Kolko

Ve většině objektově orientovaných programovacích jazyků má klíčové slovo 'this' zvláštní význam. Obvykle označuje objekt, který je kontextem provádění (tj. aktuální instanci objektu). Používáme ho například při odkazování na vlastnost objektu zevnitř: napíšeme this.propertyName, kontextem je pak objekt a this odkazuje na něj.

'this' v JavaScript

Na adrese JavaScript je to složitější, protože tam, kde tento závisí nejen na tom, jak je funkce definována, ale také na formě jejího volání.

Podívejte se, jak tento funguje v závislosti na místě a formě vyvolání.

Globální kontext

Používá se v globálním kontextu vázaném na globální objekt, jako např. okno ve webovém prohlížeči.

this; // okno

Uvnitř metody objektu

Používá se uvnitř metody objektu vázané na nejbližší obklopující objekt. Tento objekt je novým kontextem tento klíčové slovo. Všimněte si, že byste neměli měnit funkce () na syntaxi ES6 fun: () => this.context protože změní kontext.

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

obj.fun(); // objekt

V tomto příkladu s vnořeným objektem, tento stále odkazuje na nejbližší kontext.

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

nestedObj.child.fun(); // child

Funkce bez kontextu

Používá se uvnitř funkce, která nemá žádný kontext (nemá žádný objekt jako rodiče) vázaný na globální kontext, i když je funkce definována uvnitř objektu.

Všimněte si, že používáme var context místo let/const context protože nechat a const změnit kontext připojené proměnné. var je vždy nejblíže globálnímu kontextu provádění. nechat a const deklarovat proměnné pouze v lokálním oboru bloku.

var context = "global";

const obj = {
  context: "object",
  funA: function() {
    function funB() {
      const context = "function";
      return this.context;
    }
    return funB(); // vyvoláno bez kontextu
  }
};

obj.funA(); // globální

Uvnitř funkce konstruktoru

Používá se uvnitř funkce, která je konstruktorem nového objektu, který se na ni váže.

var context = "global";

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

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

Uvnitř funkce definované v řetězci prototypů

Používá se uvnitř funkce definované na prototyp řetězce k vytvoření objektu, který je na něj navázán.

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

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

Uvnitř call() a funkce apply()

call() a apply() jsou JavaScript funkce. Pomocí nich může objekt používat metody patřící jinému objektu. call() přijímá argumenty samostatně, kde apply() je přebírá jako pole.

tento je zde vázán na nový kontext změněný v call() a apply() metody.

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

Uvnitř funkce bind()

bind() je také metoda JavaScript. Vytvoří novou funkci, která bude mít tento nastaven na první parametr předaný příkazu bind()**.**

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

const objB = {
  context: "objB"
};

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

Uvnitř obsluhy událostí

Používá se v jakékoli obsluze události (například, addeventListener, onclick, attachEvent), je svázána s prvkem DOM, ke kterému byla událost připojena.

document.querySelector(".foo").addEventListener("click", function() {
  this; // odkazuje na prvek div `foo`
});

Funkce ES6 arrow

Při použití uvnitř funkce arrow je vždy vázán na její lexikální obor. Ve funkci arrow nelze znovu přiřadit funkci tento jakýmkoli způsobem.

const globalArrowFunction = () => this;

globalArrowFunction(); // Okno

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

obj.funA(); // Okno
obj.funB()(); // objekt
Fronented Report pro rok 2020

Přečtěte si více:

  • Největší problémy při vývoji softwaru na zakázku
  • Jaké jsou rozdíly mezi softwarovou společností a personální agenturou v oblasti IT?

Související články

Ilustrace zdravotnické aplikace pro chytré telefony s ikonou srdce a rostoucím zdravotním grafem, označená logem The Codest, která představuje digitální zdraví a řešení HealthTech.
Vývoj softwaru

Softwarové vybavení pro zdravotnictví: a případy použití

Nástroje, na které se dnes zdravotnické organizace spoléhají, se v ničem nepodobají papírovým kartám z doby před desítkami let. zdravotnický software dnes podporuje zdravotnické systémy, péči o pacienty a moderní poskytování zdravotní péče v klinických a...

NEJKRÁSNĚJŠÍ
Abstraktní ilustrace klesajícího sloupcového grafu se stoupající šipkou a zlatou mincí symbolizující efektivitu nákladů nebo úspory. V levém horním rohu se zobrazuje logo The Codest se sloganem "In Code We Trust" na světle šedém pozadí.
Vývoj softwaru

Jak rozšířit tým vývojářů bez ztráty kvality produktu

Zvětšujete svůj vývojový tým? Zjistěte, jak růst, aniž byste museli obětovat kvalitu produktu. Tento průvodce se zabývá příznaky, že je čas na škálování, strukturou týmu, najímáním zaměstnanců, vedením a nástroji - a také tím, jak může The Codest...

NEJKRÁSNĚJŠÍ
Vývoj softwaru

Vytváření webových aplikací odolných vůči budoucnosti: postřehy týmu odborníků The Codest

Zjistěte, jak společnost The Codest vyniká při vytváření škálovatelných, interaktivních webových aplikací pomocí nejmodernějších technologií, které poskytují bezproblémové uživatelské prostředí na všech platformách. Zjistěte, jak naše odborné znalosti podporují digitální transformaci a obchodní...

NEJKRÁSNĚJŠÍ
Vývoj softwaru

10 nejlepších lotyšských společností zabývajících se vývojem softwaru

V našem nejnovějším článku se dozvíte o nejlepších lotyšských společnostech zabývajících se vývojem softwaru a jejich inovativních řešeních. Zjistěte, jak mohou tito technologičtí lídři pomoci pozvednout vaše podnikání.

thecodest
Podniková a škálovací řešení

Základy vývoje softwaru v jazyce Java: A Guide to Outsourcing Successfully

Prozkoumejte tuto základní příručku o úspěšném vývoji softwaru outsourcing Java, abyste zvýšili efektivitu, získali přístup k odborným znalostem a dosáhli úspěchu projektu s The Codest.

thecodest

Přihlaste se k odběru naší znalostní databáze a získejte aktuální informace o odborných znalostech z oblasti IT.

    O nás

    The Codest - Mezinárodní společnost zabývající se vývojem softwaru s technologickými centry v Polsku.

    Spojené království - ústředí

    • Kancelář 303B, 182-184 High Street North E6 2JA
      Londýn, Anglie

    Polsko - Místní technologická centra

    • Kancelářský park Fabryczna, Aleja
      Pokoju 18, 31-564 Krakov
    • Brain Embassy, Konstruktorska
      11, 02-673 Varšava, Polsko

      The Codest

    • Home
    • O nás
    • Služby
    • Case Studies
    • Vědět jak
    • Kariéra
    • Slovník

      Služby

    • To Advisory
    • Vývoj softwaru
    • Vývoj backendu
    • Vývoj frontendů
    • Staff Augmentation
    • Vývojáři backendu
    • Cloudoví inženýři
    • Datoví inženýři
    • Další
    • Inženýři QA

      Zdroje

    • Fakta a mýty o spolupráci s externím partnerem pro vývoj softwaru
    • Z USA do Evropy: Proč se americké startupy rozhodly přesídlit do Evropy?
    • Srovnání technických vývojových center v zahraničí: Tech Offshore Evropa (Polsko), ASEAN (Filipíny), Eurasie (Turecko)
    • Jaké jsou hlavní výzvy CTO a CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Copyright © 2026 by The Codest. Všechna práva vyhrazena.

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