上一篇介紹構造函數時有提到必須使用new 來呼叫,那麼為什麼需要new呢? new 到底做了什麼事情?
new 的四件事情
new是一種語法糖,它幫我們做了四件事情,讓我們先看代碼
let polyfillNew = (constructor,...args)=>{
let obj = {}
Object.setPrototypeOf(obj, constructor.prototype) // 等同於 obj.__proto__ = constructor.prototype
let result = constructor.call(obj,...args)
return typeof result === 'object' ? result : obj
}
上一篇介紹構造函數時有提到必須使用new 來呼叫,那麼為什麼需要new呢? new 到底做了什麼事情?
new 的四件事情
new是一種語法糖,它幫我們做了四件事情,讓我們先看代碼
總結
其實new 所做的事情很簡單,拆解new所做的事情之後就清楚為什麼我們要創建實例時必須使用new操作符,它幫我們處理原型鏈以及this的指向,最後返回我們所需要的實例。