假设我们有两个函数,如下所示:
function a(){ this.x = 5; return {z:20};}
function b(){ this.x = 5; return 30;}
现在,如果您运行这些行,一切似乎都是合理的:
a(); //output : {z:20}
b(); //output : 30;
但是如果您将它们作为对象构造函数运行:
new a() //output : Object {z:20}
new b() //output : b {x:5}
我不明白new
构造函数是否应该总是返回一个对象,为什么行为不同?JavaScript 会观察返回类型吗?如果返回类型是一个对象,那么直接返回它,如果不是,它返回启动的实例?
我认为如果它是一个构造函数,那么它应该总是忽略返回类型并返回启动的对象。我认为这种行为使 JavaScript 过于复杂。这里还有什么我不明白的吗?