js的new到底做了什么


眾所周知,大多數的語言中都有new這個關鍵詞,沒有對象,那就new一個吧。

在js中,new主要完成了四件事情

1 // new 做了什么
2 const obj = {}
3 obj.__proto__ = create.prototype
4 // 構造函數如果有返回值得話,就返回這個對象,沒有返回對象的話就返回創建的這個obj
5 var result = create.call(obj,this.arguments)
6 return result instanceof Object?result:obj

1.創建一個空的對象

2.第二,每個對象都有一個隱形原型屬性:__proto__,這個屬性指向的是構造函數的原型(js原型、原型鏈知識)

就是obj.__proto__ = create.prototype

3.然后利用call函數改變create函數的內部this指向為obj

4.判斷構造函數是否有返回對象,如果返回對象的話new就返回那個對象(代碼中的result),否則返回新創建的obj


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM