【问题标题】:Is it possible to do (new Thing())() for some Thing?是否可以为某些事物执行 (new Thing())() ?
【发布时间】:2014-07-29 03:14:17
【问题描述】:

本质上,我想要的是让 Thing 的构造函数中的 this 成为一个函数(但当然是 instanceof Thing)。这可能吗?

【问题讨论】:

  • 我不确定我是否理解你的问题。你在看类似这样的东西吗jsbin.com/fisug/1/edit
  • @Runner:我想是这样,但这不会导致new Thing() instanceof Thing === true。

标签: javascript constructor prototype prototypal-inheritance prototype-programming


【解决方案1】:

没有。本机函数是唯一可调用的。

【讨论】:

  • 我愿意接受你的回答。有这方面的文档/规范吗?
  • @beardtree:不幸的是,ES5 规范没有具体说明这一点,但我 99.9% 的把握这对 ES5 和当前的 ES6 来说是正确的。 (见es5.github.io/#x9.11;函数有[[Call]],但规范中并没有说明只有函数可以有它。实际上不是是真的—— typeof 在 IE8 和更早版本中的主机对象方法上会导致 'object',这是符合标准的,但您不能在用户代码中创建主机对象。)
【解决方案2】:

函数不能有Function.prototype以外的原型链,函数不能是对象的原型。

所以类的实例不能被调用,函数不能从类继承。

我也遇到过我认为这很有用但发现它不起作用的情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-04
    • 1970-01-01
    • 2017-08-11
    • 2012-11-27
    • 2012-12-22
    • 1970-01-01
    • 2014-05-26
    • 1970-01-01
    相关资源
    最近更新 更多