window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = finestra if (w.LeadBooster) { console.warn('LeadBooster esiste già') } 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 }) }, } } })() Comprendere la parola chiave "this" in JavaScript - The Codest
The Codest
  • Chi siamo
  • Servizi
    • Sviluppo di software
      • Sviluppo Frontend
      • Sviluppo backend
    • Staff Augmentation
      • Sviluppatori Frontend
      • Sviluppatori backend
      • Ingegneri dei dati
      • Ingegneri del cloud
      • Ingegneri QA
      • Altro
    • Consulenza
      • Audit e consulenza
  • Industrie
    • Fintech e banche
    • E-commerce
    • Adtech
    • Tecnologia della salute
    • Produzione
    • Logistica
    • Automotive
    • IOT
  • Valore per
    • CEO
    • CTO
    • Responsabile della consegna
  • Il nostro team
  • Case Studies
  • Sapere come
    • Blog
    • Incontri
    • Webinar
    • Risorse
Carriera Contattate
  • Chi siamo
  • Servizi
    • Sviluppo di software
      • Sviluppo Frontend
      • Sviluppo backend
    • Staff Augmentation
      • Sviluppatori Frontend
      • Sviluppatori backend
      • Ingegneri dei dati
      • Ingegneri del cloud
      • Ingegneri QA
      • Altro
    • Consulenza
      • Audit e consulenza
  • Valore per
    • CEO
    • CTO
    • Responsabile della consegna
  • Il nostro team
  • Case Studies
  • Sapere come
    • Blog
    • Incontri
    • Webinar
    • Risorse
Carriera Contattate
Freccia indietro TORNA INDIETRO
2019-09-09
Sviluppo di software

Capire la parola chiave 'this' in JavaScript

Lukasz Kolko

Nella maggior parte dei linguaggi di programmazione orientati agli oggetti, la parola chiave 'this' ha un significato particolare. Di solito si riferisce all'oggetto che è il contesto di esecuzione (cioè all'istanza corrente dell'oggetto). Ad esempio, si usa quando si fa riferimento a una proprietà dell'oggetto dall'interno: si digita this.propertyName, quindi il contesto è l'oggetto e this si riferisce ad esso.

'questo' in JavaScript

In JavaScript è più complicato perché dove questo dipende non solo da come viene definita la funzione, ma anche dalla forma in cui viene chiamata.

Guardate come questo funziona a seconda del luogo e della forma di invocazione.

Contesto globale

Utilizzato in un contesto globale legato all'oggetto globale, come finestra in un browser web.

questo; // finestra

Metodo interno all'oggetto

Utilizzato all'interno di un metodo oggetto legato all'oggetto più vicino. L'oggetto è il nuovo contesto del metodo questo parola chiave. Si noti che non si deve modificare funzione () alla sintassi ES6 fun: () => this.context perché cambierebbe il contesto.

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

obj.fun(); // oggetto

In questo esempio con un oggetto annidato, questo si riferisce ancora al suo contesto più prossimo.

const nestedObj = {
  contesto: "genitore",
  figlio: {
    contesto: "bambino",
    fun: function() {
      return this.context;
    }
  }
};

nestedObj.child.fun(); // bambino

Funzione senza contesto

Utilizzato all'interno di una funzione che non ha un contesto (non ha un oggetto come genitore) legato al contesto globale, anche se la funzione è definita all'interno dell'oggetto.

Si noti che si utilizza var contesto invece di contesto let/const perché lasciare che e costitutivo modificare il contesto della variabile racchiusa. var è sempre il più vicino al contesto di esecuzione globale. lasciare che e costitutivo dichiarare le variabili solo in un ambito di blocco locale.

var context = "global";

const obj = {
  contesto: "object",
  funA: function() {
    funzione funB() {
      const context = "function";
      return this.context;
    }
    return funB(); // invocata senza contesto
  }
};

obj.funA(); // globale

All'interno della funzione costruttore

Utilizzato all'interno di una funzione che è il costruttore del nuovo oggetto ad essa legato.

var context = "global";

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

const obj = new Obj();
obj.context; // Contesto dell'oggetto

Funzione interna definita nella catena di prototipi

Utilizzato all'interno di una funzione definita nella catena dei prototipi per creare un oggetto ad essa legato.

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

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

All'interno chiamare() e le funzioni apply()

chiamare() e applicare() sono JavaScript funzioni. Con queste, un oggetto può utilizzare metodi appartenenti a un altro oggetto. chiamare() prende argomenti separatamente dove applicare() li prende come array.

questo è qui legato al nuovo contesto modificato in chiamare() e applicare() metodi.

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

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

All'interno della funzione bind()

bind() è anch'esso un metodo JavaScript. Crea una nuova funzione che avrà questo impostato sul primo parametro passato a bind()**.**

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

const objB = {
  contesto: "objB"
};

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

All'interno dei gestori di eventi

Utilizzato in qualsiasi gestore di eventi (ad esempio, addeventListener, onclick, attachEvent), è legato all'elemento DOM a cui l'evento era collegato.

document.querySelector(".foo").addEventListener("click", function() {
  this; // si riferisce all'elemento div `foo
});

Funzione freccia ES6

Utilizzato all'interno della funzione freccia, è sempre legato al suo ambito lessicale. Nella funzione freccia, non è possibile riassegnare l'elemento questo in qualsiasi modo.

const globalArrowFunction = () => this;

globalArrowFunction(); // Finestra

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

obj.funA(); // Finestra
obj.funB()(); // oggetto
Rapporto Frontiera per il 2020

Per saperne di più:

  • Le maggiori sfide dello sviluppo di software personalizzato
  • Quali sono le differenze tra una software house e un'agenzia di personale IT?

Articoli correlati

Sviluppo di software

Costruire applicazioni web a prova di futuro: le intuizioni del team di esperti di The Codest

Scoprite come The Codest eccelle nella creazione di applicazioni web scalabili e interattive con tecnologie all'avanguardia, offrendo esperienze utente senza soluzione di continuità su tutte le piattaforme. Scoprite come la nostra esperienza favorisce la trasformazione digitale e il business...

IL CANCRO
Sviluppo di software

Le 10 principali aziende di sviluppo software con sede in Lettonia

Scoprite le migliori aziende di sviluppo software della Lettonia e le loro soluzioni innovative nel nostro ultimo articolo. Scoprite come questi leader tecnologici possono aiutarvi a migliorare la vostra attività.

thecodest
Soluzioni per aziende e scaleup

Essenziali di sviluppo software Java: Guida all'outsourcing di successo

Esplorate questa guida essenziale sullo sviluppo di software Java con successo outsourcing per migliorare l'efficienza, accedere alle competenze e guidare il successo del progetto con The Codest.

thecodest
Sviluppo di software

La guida definitiva all'outsourcing in Polonia

L'aumento di outsourcing in Polonia è guidato dai progressi economici, educativi e tecnologici, che favoriscono la crescita dell'IT e un clima favorevole alle imprese.

IlCodesto
Soluzioni per aziende e scaleup

Guida completa agli strumenti e alle tecniche di audit IT

Gli audit IT garantiscono sistemi sicuri, efficienti e conformi. Per saperne di più sulla loro importanza, leggete l'articolo completo.

The Codest
Jakub Jakubowicz CTO e cofondatore

Iscrivetevi alla nostra knowledge base e rimanete aggiornati sulle competenze del settore IT.

    Chi siamo

    The Codest - Società internazionale di sviluppo software con centri tecnologici in Polonia.

    Regno Unito - Sede centrale

    • Ufficio 303B, 182-184 High Street North E6 2JA
      Londra, Inghilterra

    Polonia - Poli tecnologici locali

    • Parco uffici Fabryczna, Aleja
      Pokoju 18, 31-564 Cracovia
    • Ambasciata del cervello, Konstruktorska
      11, 02-673 Varsavia, Polonia

      The Codest

    • Casa
    • Chi siamo
    • Servizi
    • Case Studies
    • Sapere come
    • Carriera
    • Dizionario

      Servizi

    • Consulenza
    • Sviluppo di software
    • Sviluppo backend
    • Sviluppo Frontend
    • Staff Augmentation
    • Sviluppatori backend
    • Ingegneri del cloud
    • Ingegneri dei dati
    • Altro
    • Ingegneri QA

      Risorse

    • Fatti e miti sulla collaborazione con un partner esterno per lo sviluppo di software
    • Dagli Stati Uniti all'Europa: Perché le startup americane decidono di trasferirsi in Europa
    • Confronto tra gli hub di sviluppo Tech Offshore: Tech Offshore Europa (Polonia), ASEAN (Filippine), Eurasia (Turchia)
    • Quali sono le principali sfide di CTO e CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Condizioni di utilizzo del sito web

    Copyright © 2025 di The Codest. Tutti i diritti riservati.

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