最近我参加了一次采访,采访者问了一个有趣的问题看看
function MyClass(){
this.a = 10;
return 20; // Interesting part
}
var obj1 = new MyClass();
console.log(obj1.a); // 10 works as expected.
console.log(obj1.constructor()); // 20 later I found this
您将如何从obj1访问返回值(20)?
在查看了obj1的原型后我找到了答案。 obj1.constructor()按预期工作
请帮助我理解这一点。
答案 0 :(得分:4)
请参阅mdn:
构造函数返回的对象成为整个新表达式的结果。 如果构造函数没有显式返回对象,则使用在步骤1中创建的对象。(通常构造函数不返回值,但如果他们想要,他们可以选择这样做覆盖正常的对象创建过程。)
20
无处可去,无法访问。它不是一个对象,所以会返回MyCass的实例。