说结果(1)
function Foo() {
this.a = 1;
return {
a: 100
};
}
Foo.prototype.a = 20;
Foo.prototype.b = 21;
console.log(new Foo().a);
console.log(new Foo().b);
输出?
将 return 删掉之后输出?
解答
补充:构造函数
return一个对象时,new表达式的结果就是这个对象;返回非对象(原始值)则被忽略,依旧返回新创建的实例。
- 当前代码:
new Foo().a→100(构造函数返回了{a: 100},替换了默认实例);new Foo().b→undefined(返回的对象上没有b,原型链上的b也不可见)。
- 删掉
return后:new Foo().a→1(实例自身的a);new Foo().b→21(原型上的b)。



