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

构造函数可以返回哪些值以避免返回?

构造函数可以返回哪些值以避免返回?

收到一只叮咚 2019-07-09 13:20:00
构造函数可以返回哪些值以避免返回?Javascript中的返回语句返回值的确切情况是什么?this当使用new关键词?例子:function Foo () {   return something;}var foo = new Foo ();如果我没弄错,如果something是一个非函数的原语,this会被归还。不然的话something会被归还。这是对的吗?IOW,什么值能something采取引起(new Foo () instanceof Foo) === false?
查看完整描述

3 回答

?
沧海一幻觉

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

上描述了确切的条件。[[Construct]]属性使用的内部属性。new操作员:

从ECMA-262第三。版本规格:

13.2.2 [[Construct]]

[[Construct]]属性的Function对象F调用时,将采取以下步骤:

  1. 创建一个新的本机ECMAScript对象。
  2. 设置

    [[Class]]

    .的性质

    Result(1)

    "Object".

  3. 的原型属性的值。

    F.

  4. 如果

    Result(3)

    是一个对象,将

    [[Prototype]]

    .的性质

    Result(1)

    Result(3).

  5. 如果

    Result(3)

    不是对象,请将

    [[Prototype]]

    .的性质

    Result(1)

    原作

    Object

    中描述的原型对象

    15.2.3.1.

  6. 调用

    [[Call]]

    .的性质

    F

    ,提供

    Result(1)

    就像

    this

    值,并提供传递给

    [[Construct]]

    作为参数值。
  7. 如果

    Type(Result(6))

    Object

    然后再回来

    Result(6).

  8. 回归

    Result(1).

查看步骤7和步骤8,只有在Result(6)(从F构造函数)是一个物体。


查看完整回答
反对 回复 2019-07-09
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

我找不到关于这件事的任何文件,但我认为你是对的。例如,您可以返回new Number(5)构造函数,而不是文字。5(这被忽略和this返回)。


查看完整回答
反对 回复 2019-07-09
  • 3 回答
  • 0 关注
  • 403 浏览
慕课专栏
更多

添加回答

举报

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