new做了什么
第一步: 创建一个空对象,作为将要返回的对象。
第二步: 将这个空对象的原型,指向构造函数的prototype属性。这一步的作用是让这个对象能沿着原型链去使用构造函数中prototype上的方法。
第三步: 将这个空对象赋值给函数内部的this关键字,执行函数。这一步的作用是让构造器中设置在this上的属性最终设置在这个对象上。
第四步: 返回这个对象
构造函数中如果有return
var Vehicle = function () {
this.price = 1000;
return 1000;
};
console.log((new Vehicle()) === 1000)
// false
var Vehicle = function () {
this.price = 1000;
return {
price: 2000
};
};
console.log((new Vehicle()).price)
// 2000