window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', versión: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster ya existe') } 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 }) }, } } })() Comprensión de la palabra clave "this" en JavaScript - The Codest
The Codest
  • Quiénes somos
  • Servicios
    • Desarrollo de software
      • Desarrollo Frontend
      • Desarrollo backend
    • Staff Augmentation
      • Desarrolladores frontales
      • Desarrolladores de backend
      • Ingenieros de datos
      • Ingenieros de la nube
      • Ingenieros de control de calidad
      • Otros
    • Asesoramiento
      • Auditoría y consultoría
  • Industrias
    • Fintech y Banca
    • E-commerce
    • Adtech
    • Tecnología sanitaria
    • Fabricación
    • Logística
    • Automoción
    • IOT
  • Valor para
    • CEO
    • CTO
    • Gestor de entregas
  • Nuestro equipo
  • Case Studies
  • Saber cómo
    • Blog
    • Meetups
    • Seminarios en línea
    • Recursos
Carreras profesionales Póngase en contacto
  • Quiénes somos
  • Servicios
    • Desarrollo de software
      • Desarrollo Frontend
      • Desarrollo backend
    • Staff Augmentation
      • Desarrolladores frontales
      • Desarrolladores de backend
      • Ingenieros de datos
      • Ingenieros de la nube
      • Ingenieros de control de calidad
      • Otros
    • Asesoramiento
      • Auditoría y consultoría
  • Valor para
    • CEO
    • CTO
    • Gestor de entregas
  • Nuestro equipo
  • Case Studies
  • Saber cómo
    • Blog
    • Meetups
    • Seminarios en línea
    • Recursos
Carreras profesionales Póngase en contacto
Flecha atrás VOLVER
2019-09-09
Desarrollo de software

Comprensión de la palabra clave "this" en JavaScript

Lukasz Kolko

En la mayoría de los lenguajes de programación orientados a objetos, la palabra clave 'this' tiene un significado especial. Normalmente se refiere al objeto que es el contexto de ejecución (es decir, a la instancia actual del objeto). Por ejemplo, usamos esto cuando nos referimos a una propiedad del objeto desde dentro: escribimos this.propertyName, y entonces el contexto es el objeto y this se refiere a él.

"esto en JavaScript

En JavaScript es más complicado porque donde este depende no sólo de cómo esté definida la función, sino también de la forma de llamarla.

Mira cómo este funciona en función del lugar y la forma de invocación.

Contexto mundial

Se utiliza en un contexto global vinculado al objeto global, como ventana en un navegador web.

this; // ventana

Dentro del método del objeto

Se utiliza dentro de un método de objeto vinculado al objeto adyacente más cercano. El objeto es el nuevo contexto del método este palabra clave. Tenga en cuenta que no debe cambiar función () a la sintaxis ES6 fun: () => this.context porque cambiará el contexto.

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

obj.fun(); // objeto

En este ejemplo con un objeto anidado, este sigue refiriéndose a su contexto más próximo.

const nestedObj = {
  contexto: "padre",
  hijo: {
    contexto: "hijo",
    fun: function() {
      return this.context;
    }
  }
};

nestedObj.child.fun(); // child

Función sin contexto

Se utiliza dentro de una función que no tiene contexto (no tiene un objeto como padre) vinculado al contexto global, incluso si la función está definida dentro del objeto.

Tenga en cuenta que utilizamos var contexto en lugar de let/const context porque deje y const cambiar el contexto adjunto de la variable. var es siempre el más cercano al contexto de ejecución global. deje y const declarar variables sólo en un ámbito de bloque local.

var context = "global";

const obj = {
  contexto "objeto",
  funA: function() {
    función funB() {
      const context = "función";
      return this.context;
    }
    return funB(); // invocada sin contexto
  }
};

obj.funA(); // global

Dentro de la función constructora

Se utiliza dentro de una función que es el constructor del nuevo objeto vinculado a ella.

var context = "global";

función Obj() {
  this.context = "Obj context";
}

const obj = new Obj();
obj.context; // Contexto del objeto

Dentro de la función definida en la cadena de prototipos

Se utiliza dentro de una función definida en la cadena de prototipos para crear un objeto vinculado a ella.

const ProtoObj = {
  fun: function() {
    return este.nombre;
  }
};

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

En llamar() y apply()

llamar() y aplicar() son JavaScript funciones. Con ellas, un objeto puede utilizar métodos pertenecientes a otro objeto. llamar() toma argumentos por separado donde aplicar() los toma como una matriz.

este se vincula aquí al nuevo contexto modificado en llamar() y aplicar() métodos.

const objA = {
  contexto: "objA",
  fun: function() {
    console.log(este.contexto, argumentos);
  }
};

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

Dentro de la función bind()

bind() también es un método JavaScript. Crea una nueva función que tendrá este en el primer parámetro pasado a bind()**.**

const objA = {
  contexto: "objA",
  fun: function() {
    console.log(este.contexto, argumentos);
  }
};

const objB = {
  contexto: "objB"
};

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

Dentro de los controladores de eventos

Se utiliza en cualquier controlador de eventos (por ejemplo, addeventListener, onclick, attachEvent), se vincula al elemento DOM al que se adjuntó el evento.

document.querySelector(".foo").addEventListener("click", function() {
  this; // se refiere al elemento div `foo
});

Función de flecha ES6

Utilizado dentro de la función de flecha siempre está ligado a su ámbito léxico. En la función de flecha, no se puede reasignar el atributo este de ninguna manera.

const globalFunciónFlecha = () => this;

globalArrowFunction(); // Ventana

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

obj.funA(); // Ventana
obj.funB()(); // objeto
Informe Fronented para 2020

Más información:

  • Los mayores retos del desarrollo de software a medida
  • ¿Cuáles son las diferencias entre una empresa de software y una agencia de contratación de personal informático?

Artículos relacionados

Desarrollo de software

Crear aplicaciones web preparadas para el futuro: ideas del equipo de expertos de The Codest

Descubra cómo The Codest destaca en la creación de aplicaciones web escalables e interactivas con tecnologías de vanguardia, ofreciendo experiencias de usuario fluidas en todas las plataformas. Descubra cómo nuestra experiencia impulsa la transformación...

EL MEJOR
Desarrollo de software

Las 10 mejores empresas de desarrollo de software de Letonia

Conozca las principales empresas de desarrollo de software de Letonia y sus innovadoras soluciones en nuestro último artículo. Descubra cómo estos líderes tecnológicos pueden ayudarle a mejorar su negocio.

thecodest
Soluciones para empresas y escalas

Fundamentos del desarrollo de software Java: Guía para externalizar con éxito

Explore esta guía esencial sobre el desarrollo de software Java outsourcing con éxito para mejorar la eficiencia, acceder a la experiencia e impulsar el éxito de los proyectos con The Codest.

thecodest
Desarrollo de software

La guía definitiva para subcontratar en Polonia

El auge de las outsourcing en Polonia está impulsado por los avances económicos, educativos y tecnológicos, que fomentan el crecimiento de las TI y un clima favorable a las empresas.

TheCodest
Soluciones para empresas y escalas

Guía completa de herramientas y técnicas de auditoría informática

Las auditorías informáticas garantizan sistemas seguros, eficientes y conformes. Obtenga más información sobre su importancia leyendo el artículo completo.

The Codest
Jakub Jakubowicz CTO y Cofundador

Suscríbase a nuestra base de conocimientos y manténgase al día de la experiencia del sector informático.

    Quiénes somos

    The Codest - Empresa internacional de desarrollo de software con centros tecnológicos en Polonia.

    Reino Unido - Sede central

    • Oficina 303B, 182-184 High Street North E6 2JA
      Londres, Inglaterra

    Polonia - Centros tecnológicos locales

    • Parque de oficinas Fabryczna, Aleja
      Pokoju 18, 31-564 Cracovia
    • Embajada del Cerebro, Konstruktorska
      11, 02-673 Varsovia, Polonia

      The Codest

    • Inicio
    • Quiénes somos
    • Servicios
    • Case Studies
    • Saber cómo
    • Carreras profesionales
    • Diccionario

      Servicios

    • Asesoramiento
    • Desarrollo de software
    • Desarrollo backend
    • Desarrollo Frontend
    • Staff Augmentation
    • Desarrolladores de backend
    • Ingenieros de la nube
    • Ingenieros de datos
    • Otros
    • Ingenieros de control de calidad

      Recursos

    • Hechos y mitos sobre la cooperación con un socio externo de desarrollo de software
    • De EE.UU. a Europa: ¿Por qué las startups estadounidenses deciden trasladarse a Europa?
    • Comparación de los polos de desarrollo de Tech Offshore: Tech Offshore Europa (Polonia), ASEAN (Filipinas), Eurasia (Turquía)
    • ¿Cuáles son los principales retos de los CTO y los CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Condiciones de uso del sitio web

    Copyright © 2025 por The Codest. Todos los derechos reservados.

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