据我了解,在JavaScript(壁虎变体)这样的:JavaScript的 - 功能的核心对象的行为
var a = new A();
是这样的一个语法糖:正因为如此
var a = {};
a.__proto__ = A.prototype;
A.call(a);
,A()(相当于A.call()?)和新A()应产生两个不同的结果,如下所示:
>>> new Date()
Fri Nov 19 2010 01:44:22 GMT+0100 (CET) {}
>>> typeof new Date()
"object"
>>> Date()
"Fri Nov 19 2010 01:44:42 GMT+0100 (CET)"
>>> typeof Date()
"string"
到目前为止这么好。
但是,核心对象Function
表现不同:
>>> Function('return 123;')
anonymous()
>>> typeof Function('return 123;')
"function"
>>> Function('return 123;')()
123
>>> new Function('return 123;')
anonymous()
>>> typeof new Function('return 123;')
"function"
>>> new Function('return 123;')()
123
我缺少一些小事吗?
你*可以*从JavaScript中的“返回”返回一个不同的值 - 一些内置函数(如日期)像这样工作。我不确定它在哪里被记录。 – 2010-11-19 01:01:20
@pst,请参阅EcmaScript 5章13.2.2 [[构造]]。见http://ecma262-5.com/ELS5_Section_13.htm – 2010-11-19 02:08:15