ExpertiDict

JavaScript · Avançado · Inglês · Técnico

new.target

/nu ˈtɑɹɡɪt/substantivo

Meta-propriedade disponível dentro de funções que indica se elas foram chamadas com new e qual construtor foi invocado. Vale undefined em chamadas normais.

Onde usar

Usada para impedir a instanciação direta de classes abstratas e para exigir o new. Em code review, aparece em classes base que lançam erro se new.target === ClasseBase.

Em código

class Base {
  constructor() {
    if (new.target === Base)
      throw new TypeError('abstrata');
  }
}
class Filha extends Base {}
new Filha(); // ok; new Base() lança

Exemplos

I used new.target to block instantiating the abstract class.

Usei new.target para bloquear a instanciação da classe abstrata.

Outside of new, new.target is undefined.

Fora de um new, o new.target é undefined.

Cuidado

Esperar que valha sempre a classe base: em subclasses, new.target aponta para a classe efetivamente instanciada.

Veja também

Todos os termos de JavaScript