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)
Тип ошибки
Что пошло не так?
В 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