new操作符都做了什么?

在通过new关键字创建对象时,分别做了一下几个步骤

  1. 创建一个空对象
  2. 改变构造函数中的this指向,使其指向空对象
  3. 执行构造函数中的代码(为空对象赋予属性和方法)
  4. 返回这个对象

而具体上,可以通过代码模拟实现

function Base() {
        
    }
var obj = new Base(); // 创建一个空对象
obj.__proto__ = Base.prototype; // 让空对象中的__proto__属性指向其原型
Base.call(obj); // 改变构造函数this指向,并执行

 

posted @ 2020-04-19 15:10  ashen1999  阅读(350)  评论(0编辑  收藏  举报