js中new操作符都替我们干了些啥?
通过new一个构造函数Person生成实例p1:
function Person(name) {
this.name = name;
this.getName = function() {
console.log(this.name)
}
}
let p1 = new Person('Ryan')
console.log(p1)
打印实例p1如下:
模拟new操作符过程:
let o = {}
o.__proto__ = Person.prototype
Person.call(o)
o.name = 'Xu'
let p2 = o
console.log(p2)
打印p2如下:
可以看出p1和p2打印结果相同。
因此,关于new操作符的总结如下:
1、新建一个对象
2、将新建对象的原型(_ _ proto _ _)指向构造函数的prototype
3、将构造函数中的this指向新建对象
参考文献:
[1] new 到底发生了什么