js中new操作符做了什么

2023-05-23 22:17:12 浏览数 (1)

1、创建一个空对象

2、将空对象的原型链指向该构造函数的原型链

3、执行构造函数,将this绑定到空对象中

4、根据构造函数的返回值做判断,若是原始数据则忽略,若是对象的话则正常返回处理,若没有默认返回this

代码语言:javascript复制
function Foo(name, age) {
	this.name = name;
	this.age = age;
    // 如果这里返回了一个基本数据,或者没有返回值,就返回当前实例对象
    // 如果这里返回了一个对象,则返回该对象
}
console.log(new Foo('zs', 23))

// 创建一个类似new操作符的函数
function newTest(Fn, ...arg) {
	let obj = {};
	Object.setPrototypeOf(obj, Fn.prototype);
	let res = Fn.apply(obj, arg);
	return res instanceof Object ? res : obj
}
console.log(newTest(Foo, 'lisi', 18))

0 人点赞