(自用面试题)new操作符的实现原理是什么?

85 阅读1分钟
  1. 在内存中创建一个新对象。 
  2. 这个新对象内部的[[Prototype]]/对象原型被赋值为构造函数的prototype属性/原型对象

AATEENTION:
[[Prototype]]等价于__prototype__。

  1. 构造函数内部的this被赋值为这个新对象(即this指向新对象) 。 
  2. 执行构造函数内部的代码(给新对象添加属性和方法) 。 
  3. 如果构造函数返回非空对象,则返回该对象;否则返回刚创建的新对象(所以构造函数里面不需要return)。

eg:

function Test(name) {
  this.name = name;
  return { age: 26 };
}
const t = new Test('xxx');
console.log(t); // { age: 26 }
console.log(t.name); // undefined