【筆記整理】 手寫一個new實現

很久之前模仿大佬的文章寫的筆記,現在拿出來整理複習一下

大概思路

  // 手寫一個new實現
function create() {
  //創建一個空的對象
  var obj = new Object(),
    //獲得構造函數,arguments中去除第一個參數
    Con = [].shift.call(arguments)
  //鏈接到原型,obj可以訪問到構造函數原型中的屬性
  obj._proto_ = Con.prototype
  //綁定this實現繼承,obj可以訪問到構造函數中的屬性
  var ret = Con.apply(obj, arguments)
  //優先返回構造函數返回的對象
  return ret instanceof Object ? ret : obj
}

// 使用這個手寫的new
function Person() {... }
//使用內置函數new
var person = new Person()

//使用手寫的new,即create
var person = creaate(Person, ...)

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章