A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developer.cdn.mozilla.net/ru/docs/Web/JavaScript/Reference/Operators/new.target below:

new.target - JavaScript | MDN

new.target

Baseline Widely available

Свойство new.target позволяет определить была ли функция или конструктор вызваны с помощью оператора new. В конструкторах и функциях инстанциированных с помощью оператора new, new.target возвращает ссылку на конструктор или функцию. При обычном вызове функции new.target имеет значение undefined.

Синтаксис Описание

Синтаксис new.target состоит из ключевого слова new, точки, и свойства target. Обычно new служит контекстом для доступа к свойству, но здесь new не совсем объект. Однако при вызове конструктора, new.target ссылается на конструктор вызванный с помощью new и таким образом new становится виртуальным контекстом.

Свойство new.target это мета свойство которое доступно во всех функциях. В стрелочных функция, new.target ссылается на new.target внешней функции.

Примеры new.target в вызове функции

При обычном вызове функции (в противоположность вызову в качестве конструктора), new.target имеет значение undefined. Это позволяет определить была ли вызвана функция как конструктор через new или нет.

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

new Foo(); // выведет "Foo instantiated with new"
Foo(); // ошибка "Foo() must be called with new"
new.target в конструкторе

В конструкторе класса, new.target ссылается на конструктор, который был непосредственно вызван new. Это верно и для случая, когда new.target находится в конструкторе родительского класса, а тот в свою очередь вызывается из конструктора дочернего класса.

class A {
  constructor() {
    console.log(new.target.name);
  }
}

class B extends A {
  constructor() {
    super();
  }
}

var a = new A(); // вернёт "A"
var b = new B(); // вернёт "B"
Спецификации Совместимость с браузерами Смотрите также

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4