Javascript 如何创建一个可以';不能用作构造函数

Javascript 如何创建一个可以';不能用作构造函数,javascript,Javascript,我试图在javascript中创建一个不能像构造函数一样调用的函数,比如说,如果函数是function SomeFunction(){},像new SomeFunction()那样调用它,它应该抛出一个异常,但是不使用new调用它应该可以工作 有没有办法做到这一点?使用。这是一个特殊属性,当函数作为构造函数调用时设置。请参见下面的示例 功能测试(){ 如果(新的.target){ 抛出新错误('不能作为构造函数调用'); } 返回“测试”; } log(test()); log(新测试())使

我试图在javascript中创建一个不能像构造函数一样调用的函数,比如说,如果函数是
function SomeFunction(){}
,像
new SomeFunction()
那样调用它,它应该抛出一个异常,但是不使用new调用它应该可以工作

有没有办法做到这一点?

使用。这是一个特殊属性,当函数作为构造函数调用时设置。请参见下面的示例

功能测试(){
如果(新的.target){
抛出新错误('不能作为构造函数调用');
}
返回“测试”;
}
log(test());
log(新测试())使用。这是一个特殊属性,当函数作为构造函数调用时设置。请参见下面的示例

功能测试(){
如果(新的.target){
抛出新错误('不能作为构造函数调用');
}
返回“测试”;
}
log(test());

log(新测试())您也可以为此使用es6 arrow
=>
函数,因为它们不允许作为构造函数

让SomeFunction=()=>{console.log(“调用”);}
SomeFunction();
//箭头函数错误

新函数()您也可以为此使用es6 arrow
=>
函数,因为它们不允许作为构造函数

让SomeFunction=()=>{console.log(“调用”);}
SomeFunction();
//箭头函数错误

新函数()构造函数调用创建实例,因此您可以检查实例是否未创建

function SomeFunction(){
if(SomeFunction的此实例)
抛出('constructor called');
log('调用函数')
}
SomeFunction();

new SomeFunction()
构造函数调用创建一个实例,因此您可以检查实例是否未创建

function SomeFunction(){
if(SomeFunction的此实例)
抛出('constructor called');
log('调用函数')
}
SomeFunction();

new SomeFunction()
为什么要这样做?我很想知道是否有办法知道函数内部是否使用new调用。请显示函数是的,这是可能的,但似乎是XY问题。您想要解决的真正问题是什么?可能重复为什么要这样做?我很好奇是否有办法知道函数内部是否使用新函数调用。请显示函数是的,这是可能的,但似乎是一个XY问题。您想要解决的真正问题是什么?可能重复的