【笔记整理】 手写一个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, ...)

在这里插入图片描述

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