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 już istnieje') } 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 }) }, } } })() Zrozumienie słowa kluczowego "this" w JavaScript - The Codest
The Codest
  • O nas
  • Nasze Usługi
    • Software Development
      • Frontend Development
      • Backend Development
    • Zespoły IT
      • Programiści frontendowi
      • Backend Dev
      • Inżynierowie danych
      • Inżynierowie rozwiązań chmurowych
      • Inżynierowie QA
      • Inne
    • Konsultacje IT
      • Audyt i doradztwo
  • Branże
    • Fintech i bankowość
    • E-commerce
    • Adtech
    • Healthtech
    • Produkcja
    • Logistyka
    • Motoryzacja
    • IOT
  • Wartość dla
    • CEO
    • CTO
    • Delivery Managera
  • Nasz zespół
  • Case Studies
  • Nasze Know How
    • Blog
    • Meetups
    • Webinary
    • Raporty
Kariera Skontaktuj się z nami
  • O nas
  • Nasze Usługi
    • Software Development
      • Frontend Development
      • Backend Development
    • Zespoły IT
      • Programiści frontendowi
      • Backend Dev
      • Inżynierowie danych
      • Inżynierowie rozwiązań chmurowych
      • Inżynierowie QA
      • Inne
    • Konsultacje IT
      • Audyt i doradztwo
  • Wartość dla
    • CEO
    • CTO
    • Delivery Managera
  • Nasz zespół
  • Case Studies
  • Nasze Know How
    • Blog
    • Meetups
    • Webinary
    • Raporty
Kariera Skontaktuj się z nami
Strzałka w tył WSTECZ
2019-09-09
Software Development

Zrozumienie słowa kluczowego "this" w JavaScript

Łukasz Kolko

W większości obiektowych języków programowania słowo kluczowe "this" ma specjalne znaczenie. Zwykle odnosi się do obiektu będącego kontekstem wykonania (tj. do bieżącej instancji obiektu). Na przykład używamy go, gdy odnosimy się do właściwości obiektu z wewnątrz: wpisujemy this.propertyName, a następnie kontekstem jest obiekt, a this odnosi się do niego.

'to' w JavaScript

W JavaScript jest to bardziej skomplikowane, ponieważ gdzie to zależy nie tylko od sposobu zdefiniowania funkcji, ale także od formy jej wywołania.

Zobacz, jak to działa w zależności od miejsca i formy inwokacji.

Kontekst globalny

Używany w kontekście globalnym powiązanym z obiektem globalnym, np. okno w przeglądarce internetowej.

this; // okno

Metoda wewnątrz obiektu

Używany wewnątrz metody obiektu związanej z najbliższym otaczającym obiektem. Obiekt jest nowym kontekstem metody to słowo kluczowe. Należy pamiętać, że nie należy zmieniać function () do składni ES6 fun: () => this.context ponieważ zmieni to kontekst.

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

obj.fun(); // obiekt

W tym przykładzie z zagnieżdżonym obiektem, to nadal odnosi się do najbliższego kontekstu.

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

nestedObj.child.fun(); // child

Funkcja bezkontekstowa

Używany wewnątrz funkcji, która nie ma kontekstu (nie ma obiektu jako rodzica) związanego z kontekstem globalnym, nawet jeśli funkcja jest zdefiniowana wewnątrz obiektu.

Zauważ, że używamy var context zamiast let/const context ponieważ niech i const zmienić zmienną dołączoną do kontekstu. var jest zawsze najbliżej globalnego kontekstu wykonania. niech i const deklarować zmienne tylko w lokalnym zakresie bloku.

var context = "globalny";

const obj = {
  context: "object",
  funA: function() {
    function funB() {
      const context = "function";
      return this.context;
    }
    return funB(); // wywołane bez kontekstu
  }
};

obj.funA(); // global

Wewnątrz funkcji konstruktora

Używany wewnątrz funkcji, która jest konstruktorem nowego obiektu powiązanego z nim.

var context = "globalny";

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

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

Funkcja wewnętrzna zdefiniowana w łańcuchu prototypów

Używany wewnątrz funkcji zdefiniowanej w łańcuchu prototypów do tworzenia obiektu związanego z nią.

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

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

Wewnątrz call() i funkcje apply()

call() i apply() są JavaScript funkcje. Dzięki nim obiekt może korzystać z metod należących do innego obiektu. call() przyjmuje argumenty oddzielnie, gdzie apply() przyjmuje je jako tablicę.

to jest tutaj powiązany z nowym kontekstem zmienionym w call() i 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]

Wewnątrz funkcji bind()

bind() jest również metodą JavaScript. Tworzy ona nową funkcję, która będzie miała to ustawiony na pierwszy parametr przekazany do 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]

Wewnątrz programów obsługi zdarzeń

Używany w dowolnym programie obsługi zdarzeń (np, addeventListener, onclick, attachEvent), jest on powiązany z elementem DOM, do którego zdarzenie zostało dołączone.

document.querySelector(".foo").addEventListener("click", function() {
  this; // odnosi się do elementu div `foo`
});

Funkcja strzałki ES6

Używany wewnątrz funkcji strzałki jest zawsze związany z jej zakresem leksykalnym. W funkcji strzałki nie można ponownie przypisać atrybutu to w jakikolwiek sposób.

const globalArrowFunction = () => this;

globalArrowFunction(); // Okno

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

obj.funA(); // Window
obj.funB()(); // obiekt
Raport Fronented na rok 2020

Czytaj więcej:

  • Największe wyzwania związane z tworzeniem oprogramowania na zamówienie
  • Jakie są różnice między software house'em a agencją IT?

Powiązane artykuły

Software Development

Tworzenie przyszłościowych aplikacji internetowych: spostrzeżenia zespołu ekspertów The Codest

Odkryj, w jaki sposób The Codest wyróżnia się w tworzeniu skalowalnych, interaktywnych aplikacji internetowych przy użyciu najnowocześniejszych technologii, zapewniając płynne doświadczenia użytkowników na wszystkich platformach. Dowiedz się, w jaki sposób nasza wiedza napędza transformację cyfrową i biznes...

THEECODEST
Software Development

10 najlepszych firm tworzących oprogramowanie na Łotwie

Dowiedz się więcej o najlepszych łotewskich firmach programistycznych i ich innowacyjnych rozwiązaniach w naszym najnowszym artykule. Odkryj, w jaki sposób ci liderzy technologiczni mogą pomóc w rozwoju Twojej firmy.

thecodest
Rozwiązania dla przedsiębiorstw i scaleupów

Podstawy tworzenia oprogramowania Java: Przewodnik po skutecznym outsourcingu

Zapoznaj się z tym niezbędnym przewodnikiem na temat skutecznego tworzenia oprogramowania Java outsourcing, aby zwiększyć wydajność, uzyskać dostęp do wiedzy specjalistycznej i osiągnąć sukces projektu z The Codest.

thecodest
Software Development

Kompletny przewodnik po outsourcingu w Polsce

Wzrost liczby outsourcing w Polsce jest napędzany przez postęp gospodarczy, edukacyjny i technologiczny, sprzyjający rozwojowi IT i przyjazny klimat dla biznesu.

TheCodest
Rozwiązania dla przedsiębiorstw i scaleupów

Kompletny przewodnik po narzędziach i technikach audytu IT

Audyty IT zapewniają bezpieczne, wydajne i zgodne z przepisami systemy. Dowiedz się więcej o ich znaczeniu, czytając cały artykuł.

The Codest
Jakub Jakubowicz CTO & Współzałożyciel

Subskrybuj naszą bazę wiedzy i bądź na bieżąco!

    O nas

    The Codest - Międzynarodowa firma programistyczna z centrami technologicznymi w Polsce.

    Wielka Brytania - siedziba główna

    • Office 303B, 182-184 High Street North E6 2JA
      Londyn, Anglia

    Polska - lokalne centra technologiczne

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

      The Codest

    • Strona główna
    • O nas
    • Nasze Usługi
    • Case Studies
    • Nasze Know How
    • Kariera
    • Słownik

      Nasze Usługi

    • Konsultacje IT
    • Software Development
    • Backend Development
    • Frontend Development
    • Zespoły IT
    • Backend Dev
    • Inżynierowie rozwiązań chmurowych
    • Inżynierowie danych
    • Inne
    • Inżynierowie QA

      Raporty

    • Fakty i mity na temat współpracy z zewnętrznym partnerem programistycznym
    • Z USA do Europy: Dlaczego amerykańskie startupy decydują się na relokację do Europy?
    • Porównanie centrów rozwoju Tech Offshore: Tech Offshore Europa (Polska), ASEAN (Filipiny), Eurazja (Turcja)
    • Jakie są największe wyzwania CTO i CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Warunki korzystania z witryny

    Copyright © 2025 by The Codest. Wszelkie prawa zastrzeżone.

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