js中new操作符都替我们干了些啥?

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 到底发生了什么

猜你喜欢

转载自blog.csdn.net/XuM222222/article/details/83927839