为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕仙森 2019-03-10 22:20:41
我知道可以Symbol(),不能new Symbol(),但这是怎么实现的呢?或者说我能否写出这么一个函数:只能简单的函数调用,不能带new,一但加了new就报错
查看完整描述

2 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

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

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


查看完整回答
反对 回复 2019-03-10
?
慕容708150

TA贡献1831条经验 获得超4个赞

function Foo() {    if (this instanceof Foo) {        
       throw new Error("new is not permitted.");
    }
}new Foo();


查看完整回答
反对 回复 2019-03-10
  • 2 回答
  • 0 关注
  • 493 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信