new 和 Object.create 原理

new 的原理

例子:new parent()函數

new原理:this

  1. 拿到參數(第一個參數爲被new的對象,即:parent)
  2. 建立一個空對象target
  3. 把空對象target的原型鏈引用(__proto__)指向parent的原型(prototype)
  4. 執行parent的構造函數,並把this指向改成空對象target(目的:把parent對象上的屬性/方法,掛載到target上),獲得返回值result
  5. 判斷result,知足條件則return result,不然return target

image.png

上圖提供了兩種大同小異的實現原理。(引出了後面的一個問題)prototype

測一下

image.png

能夠看出,與真正new方法效果一致。code

Object.create 的原理

image.png

上面兩種不一樣的new實現,能夠得出Objcet.creat的實現原理:cdn

image.png

MDN的解釋也是比較詳細的,也能夠在看一看,加深理解對象

相關文章
相關標籤/搜索