new做了哪些事情,手写一个new

1)创建一个空对象,将构造函数中的this指向这个空对象
2)将空对象的__proto__指向构造函数的prototype原型
3)执行构造函数里面的代码,为这个空对象添加属性和方法
4)返回一个新的对象

  
 new Person(25) = {
  var obj = {}
  var result = Person.call(obj)
  obj.__proto__ = Person.prototype // 此时就建立了原型链
  return typeof result === 'object' ? result : obj  // 如果无返回值或者返回一个非对象值,则将obj作为新 
   对象返回

 }

  

posted @ 2021-03-16 14:48  糖锡  阅读(82)  评论(0)    收藏  举报