【JS】new的过程都做了什么?

1、创建一个新对象
2、新对象的原型链指向传进来的构造函数原型
3、构造函数中的this指向这个新对象
4、改变构造函数中this指向,使其指向新对象,并返回构造函数的执行结果
new的过程可以用下面的代码来理解:

function create() {
  var obj = new Object(); // 创建一个空对象
  var conFn = [].shift.call(arguments); // 删除arguments第一个参数,此参数是传进来的构造函数,conFn接收该构造函数
  obj.__proto__ = conFn.prototype; // 原型链继承
  var res = conFn.apply(obj,arguments);  // 执行构造函数,传入arguments
  return typeof res === Object ? res : obj; // 确保构造器函数总是返回一个对象
}
posted @ 2021-05-03 10:55  razzh  阅读(466)  评论(0)    收藏  举报