1. 程式人生 > >js中new操作符都替我們幹了些啥?

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 到底發生了什麼