面试官:new以下构造函数返回什么?
function Person() {
this.name = "bar";
return true; // 此时返回的是一个原始数据类型
}
let a = new Person();
console.log(a.name); // bar 或 error ?
到底a是一个对象实例还是一个布尔值?
答案是:a 就是Person的实例 { name: 'bar' },也就是说new Person返回得到是一个Person的实例,Person构造函数内部的return并没有起作用;
再来看一种情况:
function Person() {
this.name = "bar";
return { name: 'foo'}; // 此时返回的是一个引用数据类型
}
let a = new Person();
console.log(a.name); // foo