<分区>
我试图了解 JavaScript(或至少 V8)关于构造函数的行为。
我知道,JavaScript 构造函数永远不应该返回任何东西(所以:undefined
)。
但考虑一下这个 JavaScript:
function Thing() {
return '';
}
var t = new Thing();
console.log(t, typeof t); // => Thing {} "object"
现在,如果你这样做:
function Thing() {
return { hi: '' };
}
var t = new Thing();
console.log(t, typeof t); // => Object {hi: ""} "object"
甚至:
function Thing() {
this.a = 'a';
return { hi: '' };
}
var t = new Thing();
console.log(t, typeof t); // => Object {hi: ""} "object"
那么,如果您编写这种代码,为什么 JavaScript 中的构造函数返回一个对象,而不是原始类型?
this SO answer 中也提到了这种行为,但没有解释。我还滚动了 The new Operator ECMAScript 规范的一部分,及其 Construct剪断了,但这并没有启发性。
有任何提示或知识(请使用通俗易懂的英语)吗?