js中为什么Symbol可以函数调用却不能当构造器?

TIS_OMiddle
  • 15

我知道可以Symbol(),不能new Symbol(),但这是怎么实现的呢?

或者说我能否写出这么一个函数:只能简单的函数调用,不能带new,一但加了new就报错

回复
阅读 541
3 个回答

内部怎么实现的不好说。用纯js也可以实现:

function Foo() {
    if (this !== window) { // 如果是node就把window换成global
        throw new Error("new is not permitted.");
    }
    ...
}
new Foo(); // 报错
function Foo() {
    if (this instanceof Foo) {        
       throw new Error("new is not permitted.");
    }
}
new Foo();

箭头函数就是啊

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏