Я пытаюсь создать функцию в javascript, которую нельзя вызвать как конструктор, например, скажем, если функция function SomeFunction(){}
, при вызове ее как new SomeFunction()
она должна вызывать исключение, но ее вызов без new должен работать.
Есть ли способ добиться этого?
Мне любопытно понять, есть ли способ узнать внутри функции, вызывается ли она с помощью new или нет.
пожалуйста, покажите функцию
Да, это возможно, но, похоже, это проблема XY. Какую настоящую проблему вы хотите решить?
Возможный дубликат Как определить, вызывается ли функция как конструктор?
Вы также можете использовать для этого функцию стрелки es6 =>
, так как они не разрешены в качестве функций-конструкторов.
let SomeFunction = ()=>{ console.info("called");}
SomeFunction();
//Error for arrow function
new SomeFunction();
Вызов конструктора создает экземпляр, поэтому вы можете проверить, не создан ли экземпляр.
function SomeFunction () {
if (this instanceof SomeFunction)
throw('constructor called');
console.info('function called')
}
SomeFunction();
new SomeFunction()
почему ты хочешь сделать это?