【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; // 确保构造器函数总是返回一个对象
}

浙公网安备 33010602011771号