var obj = new Base()
- 创建一个新的空对象
- 将新对象的__proto__指向构造函数的 prototype
- 将构造函数的作用域赋给新对象,也就是让构造函数的 this 指向这个新对象。
- 执行构造函数中的代码( 为新对象添加属性 )
- 返回新对象
var obj = {};
obj.__proto__ = Base.prototype;
Base.call(obj); //改变this指向,并调用这个函数
- 完整示例
function Base(a){ //构造函数
this.a = a
}
Base.prototype.b = "bbb"
//new 操作
var b1 = new Base("aaa")
console.log(b1)
// 模拟new操作
var b2 = {}
b2.__proto__ = Base.prototype
Base.call(b2,"aaa") //改变this指向,并且调用这个函数,使this.a 执行。
console.log(b2)