MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

new.target

To tłumaczenie jest niekompletne. Pomóż przetłumaczyć ten artykuł z języka angielskiego.

new.target pozwala sprawdzić czy konstruktor lub funkcja była zainicjalizowana używając operatora new. Kiedy w konstruktorze lub funkcji zainicjalizowany jest operatora new, new.target zwraca referencje do konstruktora lub funkcji. W normalnym wywołaniu funkcji, new.target jest undefined.

Syntax

new.target

Opis

new.target składa się ze słowa "new", kropki i pola o nazwie "target". Przeważnie "new." jest kontekstem dostępu do pola, ale w tym przypadku "new." nie jest tak naprawdę obiektem. W wywołaniu konstruktora, new.target nawiązuje do konstruktora wywołanego przez new więc "new." staje się wirtualnym kontekstem.

Pole new.target jest meta polem które jest dostępne dla wszystkich funkcji. W arrow functions, new.target nawiązuje do new.target otaczającej funkcji.

Przykłady

new.target w wywołaniu funkcji

W normalnym wywołaniu funkcji (w przeciwieństwie do wywołania konstruktora), new.target jest undefined. Pozwala Ci to stwierdzić, czy funkcja została wywołana wraz z new jako konstruktor.

function Foo() {
  if (!new.target) throw "Foo() must be called with new";
  console.log("Foo instantiated with new");
}

Foo(); // throws "Foo() must be called with new"
new Foo(); // logs "Foo instantiated with new"

new.target w konstruktorze

W konstruktorach klasy, new.target nawiązuje do konstruktora który został bezpośrednio wywołany z new. Dzieje się tak również w przypadku kiedy konstruktor znajduje się w klasie rodzica, i został wywołany z konstruktorze dziecka.

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"

Specyfikacja

Specification Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Built-in Function Objects' in that specification.
Standard Initial definition.
ECMAScript 2017 Draft (ECMA-262)
The definition of 'Built-in Function Objects' in that specification.
Draft  

Kompatybilność przeglądarek

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 46.0 41 (41) No support No support No support
Feature Android Android Webview Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support No support 46.0 41.0 (41) No support No support No support 46.0

Zobacz również

Autorzy i etykiety dokumentu

 Autorzy tej strony: ssuperczynski
 Ostatnia aktualizacja: ssuperczynski,