Spec-Zone.ru › JavaScript

TypeError: вызов встроенного конструктора X без new запрещен

Исключение JavaScript "calling a builtin X constructor without new is forbidden" возникает, когда вы пытаетесь вызвать встроенный конструктор без использования ключевого слова new. Все современные конструкторы, такие как Promise и Map, должны вызываться с помощью new.

Сообщение

TypeError: Constructor X requires 'new' (V8-based)
TypeError: Promise constructor cannot be invoked without 'new' (V8-based)
TypeError: calling a builtin X constructor without new is forbidden (Firefox)
TypeError: calling X constructor without new is invalid (Safari)

Тип ошибки

TypeError

Что пошло не так?

В JavaScript вызов функции без new и конструирование функции с new являются двумя различными операциями, и функции могут вести себя по-разному в зависимости от того, как они вызываются.

За исключением следующих устаревших конструкторов, все современные конструкторы должны вызываться с помощью new:

  • Object()
  • Function() (и его подклассы)
  • Error() (и его подклассы)
  • RegExp()
  • Array()

Некоторые другие конструкторы, такие как Date(), и примитивные обёртки, такие как String(), Number() и Boolean(), также могут вызываться с new или без него, но в этих двух случаях возвращаемые типы различаются.

На каждой странице конструктора вы можете найти информацию о том, должен ли конструктор вызываться с помощью new.

Примеры

Недопустимые случаи

const m = Map(); // TypeError: calling a builtin Map constructor without new is forbidden

Допустимые случаи

const m = new Map();

См. также

  • new

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Builtin_ctor_no_new

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API