确切的情况是什么?return
Javascript 中的语句可以返回除this
当使用构造函数调用时new
关键词?
Example:
function Foo () {
return something;
}
var foo = new Foo ();
如果我没记错的话,如果something
是一个非函数原语,this
将被退回。否则something
被返回。它是否正确?
换句话说,什么值可以something
采取导致(new Foo () instanceof Foo) === false
?
确切的条件描述在[[Construct]]
内部属性,由new http://www.interglacial.com/javascript_spec/a-11.html#a-11.2.2操作员:
来自 ECMA-262 第 3 版。版本规格:
13.2.2 http://www.interglacial.com/javascript_spec/a-13.html#a-13.2 [[Construct]]
当。。。的时候[[Construct]]
财产为Function
object F
是
调用后,采取以下步骤:
- 创建一个新的本机 ECMAScript 对象。
- Set the [[Class]] http://bclary.com/2004/11/07/#_Class_的财产
Result(1)
to "Object"
.
- 获取原型属性的值
F
.
- If
Result(3)
是一个对象,设置[[Prototype]] http://www.interglacial.com/javascript_spec/a-4.html#a-4.3.5的财产Result(1)
to Result(3)
.
- If
Result(3)
不是一个对象,设置[[Prototype]] http://www.interglacial.com/javascript_spec/a-4.html#a-4.3.5的财产Result(1)
到原来的Object
原型对象为
描述于15.2.3.1 http://www.interglacial.com/javascript_spec/a-15.html#a-15.2.3.1.
- 调用[[Call]] http://bclary.com/2004/11/07/#a-13.2.1的财产
F
,提供Result(1)
as the this
值和
提供传入的参数列表[[Construct]]
作为
参数值。
- If
Type http://bclary.com/2004/11/07/#a-8(Result(6))
is
Object
然后返回Result(6)
.
- Return
Result(1)
.
看步骤7和8,只有当
类型Result(6)
(从返回的值F
构造函数
函数)是not一个东西。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)