The Codest
  • Sobre nós
  • Serviços
    • Desenvolvimento de software
      • Desenvolvimento de front-end
      • Desenvolvimento backend
    • Staff Augmentation
      • Programadores Frontend
      • Programadores de back-end
      • Engenheiros de dados
      • Engenheiros de nuvem
      • Engenheiros de GQ
      • Outros
    • Aconselhamento
      • Auditoria e consultoria
  • Indústrias
    • Fintech e Banca
    • E-commerce
    • Adtech
    • Tecnologia da saúde
    • Fabrico
    • Logística
    • Automóvel
    • IOT
  • Valor para
    • CEO
    • CTO
    • Gestor de entregas
  • A nossa equipa
  • Case Studies
  • Saber como
    • Blogue
    • Encontros
    • Webinars
    • Recursos
Carreiras Entrar em contacto
  • Sobre nós
  • Serviços
    • Desenvolvimento de software
      • Desenvolvimento de front-end
      • Desenvolvimento backend
    • Staff Augmentation
      • Programadores Frontend
      • Programadores de back-end
      • Engenheiros de dados
      • Engenheiros de nuvem
      • Engenheiros de GQ
      • Outros
    • Aconselhamento
      • Auditoria e consultoria
  • Valor para
    • CEO
    • CTO
    • Gestor de entregas
  • A nossa equipa
  • Case Studies
  • Saber como
    • Blogue
    • Encontros
    • Webinars
    • Recursos
Carreiras Entrar em contacto
Seta para trás VOLTAR
2019-09-09
Desenvolvimento de software

Compreender a palavra-chave 'this' em JavaScript

Lukasz Kolko

Na maioria das linguagens de programação orientadas para objectos, a palavra-chave "this" tem um significado especial. Normalmente, refere-se ao objeto que é o contexto de execução (ou seja, a instância atual do objeto). Por exemplo, utilizamos this quando nos referimos a uma propriedade de um objeto a partir do seu interior: escrevemos this.propertyName, e então o contexto é o objeto e this refere-se a ele.

'este' em JavaScript

Em JavaScript é mais complicado porque onde este depende não só da forma como a função é definida, mas também da forma de a chamar.

Veja como este funciona consoante o local e a forma de invocação.

Contexto global

Utilizado num contexto global ligado ao objeto global, como janela num navegador Web.

this; // janela

Dentro do método do objeto

Utilizado no interior de um método de objeto ligado ao objeto envolvente mais próximo. O objeto é o novo contexto do método este palavra-chave. Note-se que não se deve alterar função () para a sintaxe ES6 fun: () => this.context porque isso vai alterar o contexto.

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

obj.fun(); // objeto

Neste exemplo, com um objeto aninhado, este ainda se refere ao seu contexto mais próximo.

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

nestedObj.child.fun(); // child

Função sem contexto

Utilizado dentro de uma função que não tem contexto (não tem um objeto como pai) ligado ao contexto global, mesmo que a função seja definida dentro do objeto.

Note-se que utilizamos var contexto em vez de let/const contexto porque deixar e const alterar o contexto da variável incluída. var é sempre o mais próximo do contexto de execução global. deixar e const declarar variáveis apenas no âmbito de um bloco local.

var contexto = "global";

const obj = {
  contexto: "object",
  funA: function() {
    function funB() {
      const context = "function";
      return this.context;
    }
    return funB(); // invocado sem contexto
  }
};

obj.funA(); // global

Dentro da função de construtor

Utilizada no interior de uma função que é o construtor do novo objeto a ela ligado.

var contexto = "global";

função Obj() {
  this.context = "Obj context";
}

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

Função interna definida na cadeia de protótipos

Utilizado dentro de uma função definida no protótipo para criar um objeto ligado a ele.

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

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

No interior chamar() e as funções apply()

chamar() e aplicar() são JavaScript funções. Com estas, um objeto pode utilizar métodos pertencentes a outro objeto. chamar() recebe argumentos separadamente onde aplicar() recebe-os como uma matriz.

este está aqui ligado ao novo contexto alterado em chamar() e aplicar() métodos.

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

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 da função bind()

bind() é também um método JavaScript. Ele cria uma nova função que terá este definido como o primeiro parâmetro passado para bind()**.**

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

const objB = {
  contexto: "objB"
};

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

Dentro dos manipuladores de eventos

Utilizado em qualquer manipulador de eventos (por exemplo, addeventListener, onclick, attachEvent), este é ligado ao elemento DOM ao qual o evento foi anexado.

document.querySelector(".foo").addEventListener("click", function() {
  this; // refere-se ao elemento da div `foo
});

Função de seta ES6

Utilizada no interior da função de seta, está sempre ligada ao seu âmbito lexical. Na função de seta, não é possível reatribuir o este de qualquer forma.

const globalArrowFunction = () => this;

globalArrowFunction(); // Janela

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

obj.funA(); // Janela
obj.funB()(); // objeto
Relatório Fronented para 2020

Ler mais:

  • Os maiores desafios do desenvolvimento de software personalizado
  • Quais são as diferenças entre uma software house e uma agência de recrutamento de pessoal de TI?

Artigos relacionados

Ilustração de uma aplicação de cuidados de saúde para smartphone com um ícone de coração e um gráfico de saúde em ascensão, com o logótipo The Codest, representando soluções digitais de saúde e HealthTech.
Desenvolvimento de software

Softwares para o setor de saúde: Tipos, casos de uso

As ferramentas em que as organizações de cuidados de saúde confiam atualmente não se assemelham em nada às fichas de papel de há décadas atrás. O software de cuidados de saúde apoia agora os sistemas de saúde, os cuidados aos doentes e a prestação de cuidados de saúde modernos em...

OCODEST
Ilustração abstrata de um gráfico de barras em declínio com uma seta ascendente e uma moeda de ouro que simboliza a eficiência ou a poupança de custos. O logótipo The Codest aparece no canto superior esquerdo com o slogan "In Code We Trust" sobre um fundo cinzento claro
Desenvolvimento de software

Como dimensionar a sua equipa de desenvolvimento sem perder a qualidade do produto

Aumentar a sua equipa de desenvolvimento? Saiba como crescer sem sacrificar a qualidade do produto. Este guia cobre sinais de que é hora de escalar, estrutura da equipe, contratação, liderança e ferramentas - além de como o The Codest pode...

OCODEST
Desenvolvimento de software

Construir aplicações Web preparadas para o futuro: ideias da equipa de especialistas do The Codest

Descubra como o The Codest se destaca na criação de aplicações web escaláveis e interactivas com tecnologias de ponta, proporcionando experiências de utilizador perfeitas em todas as plataformas. Saiba como a nossa experiência impulsiona a transformação digital e o negócio...

OCODEST
Desenvolvimento de software

As 10 principais empresas de desenvolvimento de software sediadas na Letónia

Saiba mais sobre as principais empresas de desenvolvimento de software da Letónia e as suas soluções inovadoras no nosso último artigo. Descubra como estes líderes tecnológicos podem ajudar a elevar o seu negócio.

thecodest
Soluções para empresas e escalas

Fundamentos do desenvolvimento de software Java: Um Guia para Terceirizar com Sucesso

Explore este guia essencial sobre o desenvolvimento de software Java outsourcing com sucesso para aumentar a eficiência, aceder a conhecimentos especializados e impulsionar o sucesso do projeto com The Codest.

thecodest

Subscreva a nossa base de conhecimentos e mantenha-se atualizado sobre os conhecimentos do sector das TI.

    Sobre nós

    The Codest - Empresa internacional de desenvolvimento de software com centros tecnológicos na Polónia.

    Reino Unido - Sede

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

    Polónia - Pólos tecnológicos locais

    • Parque de escritórios Fabryczna, Aleja
      Pokoju 18, 31-564 Cracóvia
    • Embaixada do Cérebro, Konstruktorska
      11, 02-673 Varsóvia, Polónia

      The Codest

    • Início
    • Sobre nós
    • Serviços
    • Case Studies
    • Saber como
    • Carreiras
    • Dicionário

      Serviços

    • Aconselhamento
    • Desenvolvimento de software
    • Desenvolvimento backend
    • Desenvolvimento de front-end
    • Staff Augmentation
    • Programadores de back-end
    • Engenheiros de nuvem
    • Engenheiros de dados
    • Outros
    • Engenheiros de GQ

      Recursos

    • Factos e mitos sobre a cooperação com um parceiro externo de desenvolvimento de software
    • Dos EUA para a Europa: Porque é que as empresas americanas decidem mudar-se para a Europa?
    • Comparação dos centros de desenvolvimento da Tech Offshore: Tech Offshore Europa (Polónia), ASEAN (Filipinas), Eurásia (Turquia)
    • Quais são os principais desafios dos CTOs e dos CIOs?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Direitos de autor © 2026 por The Codest. Todos os direitos reservados.

    pt_PTPortuguese
    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 cs_CZCzech pt_PTPortuguese