1. 程式人生 > 其它 >js基礎複習之自己實現一個new方法

js基礎複習之自己實現一個new方法

技術標籤:javascriptjavascript

我們要知道new一個新的物件的時候,底層做了下面4件事情:

  1. 新生成了一個物件,即{}
  2. 連結到原型(通俗理解就是new出來的新物件隱式原型__proto__連結到建構函式顯式原型prototype上)
  3. 繫結 this,將步驟 1 新建立的物件作為 this 的上下文(實際是執行了建構函式 並將建構函式作用域指向新物件)
  4. 返回新物件
function _new(constructor, ...arg) {
	var obj = {}
	obj.__proto__ = constructor.prototype
	var result = constructor.
apply(obj, arg) // 這一步繫結constructor內部的this到obj上,並且執行constructor建構函式 return Object.prototype.toString.call(result) === '[object Object]' ? result : obj }
// 測試
const myFunc = function(name) {
    this.name = name
}

var res = _new(myFunc, 'DeanWade')
console.log(res)

在這裡插入圖片描述