JavaScript · Avançado · Inglês · Técnico
new.target
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çaExemplos
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.