【发布时间】:2019-11-08 13:39:02
【问题描述】:
看看这个例子。这里定义了两个奇怪的构造函数。我说很奇怪,因为两者都有返回语句并且不返回(隐式)this,因为通常构造函数会这样做。
但奇怪的是……当使用new 操作符调用时……
1) C3 返回新构造的this 对象,即使它已被告知返回“ggg”。
2) C2 返回它被告知返回的内容(不是this 对象)。
为什么会有这种行为差异? C2和C3之间的概念区别是什么?
构造函数什么时候返回this,什么时候返回它被告知要返回的东西?
function C2() {
this.a = 1;
return {b: 2};
}
var c2 = new C2();
console.log(c2.a); //undefined
console.log(c2.b); //2
console.log(c2); //{b:2}
function C3() {
this.a = 1;
return "ggg";
}
var c3 = new C3();
console.log(c3.a); //1
console.log(c3); //C3 {a: 1}
【问题讨论】:
-
如果返回类型是对象,
new将不起作用,因为函数将返回该对象
标签: javascript