Movatterモバイル変換


[0]ホーム

URL:


  1. Tecnologia Web para desenvolvedores
  2. JavaScript
  3. Referência JavaScript
  4. Operadores
  5. new.target

Esta página foi traduzida do inglês pela comunidade.Saiba mais e junte-se à comunidade MDN Web Docs.

View in EnglishAlways switch to English

new.target

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨setembro de 2017⁩.

A propriedadenew.target permite que você detecte quando uma função ou construtor foi chamado utilizando o operador new. Em construtores e funções instaciadas com o operadornew ,new.target retorna a referência ao construtor ou função. Em chamadas normais de funções ,new.target éundefined.

Sintaxe

new.target

Descrição

A sintaxenew.target consiste na palavra- chave"new", o ponto, e o nome da propriedade"target". Normalmente "new." serve como um contexto para a propriedade de acesso, mas aqui"new." não é exatamente um objeto. Em chamadas de construtores, entretanto,new.target se refere ao construtor invocado pelonew e então "new." se torna um contexto virtual.

new.target é uma propriedade meta que é disponibilizada para todas as funções. Em funções do tipo flecha=>,new.target se refere aonew.target em torno da função.

Exemplos

new.target em chamadas de Função

Em chamadas normais de função (diferente de chamadas a funções do tipo construtor),new.target éundefined. Isso permite que você detecte se a função foi chamada como um novo construtor.

js
function Foo() {  if (!new.target) throw "Foo() must be called with new";  console.log("Foo instanciado com new");}Foo(); // throws "Foo() must be called with new"new Foo(); // logs "Foo instanciado com new"

new.target em Construtores

Em classes construtoras,new.target se refere ao construtor que foi diretamente invocado pelonew. Isto também é o caso se o construtor é uma classe pai e foi delegado pelo construtor de um filho.

js
class A {  constructor() {    console.log(new.target.name);  }}class B extends A {  constructor() {    super();  }}var a = new A(); // logs "A"var b = new B(); // logs "B"class C {  constructor() {    console.log(new.target);  }}class D extends C {  constructor() {    super();  }}var c = new C(); // logs class C{constructor(){console.log(new.target);}}var d = new D(); // logs class D extends C{constructor(){super();}}

A partir do exemplo acima das classes C e D, mostra que new.target aponta para a definição da classe na qual foi inicializada. Exemplo, quando D foi inicializado utilizando new, a definição da classe D foi impressa e similiarmente ao caso de C, a classe C foi impressa.

Especificações

Specification
ECMAScript® 2026 Language Specification
# sec-built-in-function-objects

Compatibilidade com navegadores

Veja também

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp