js new运算法的内部实现

function mynew(func){
    
    
	if(typeof func !== 'function') return;
	//1.首先,创建一个空对象,且继承构造函数的原型对象
	let obj = Object.create(func.prototype)
	//2.构造函数被执行,this指针指向上面创建的空对象
	let result = obj.call(obj,arguments)
	//3.如果执行结果返回的是一个对象或者函数,则返回执行结果,否则返回第一步空对象
	let isObject = typeof result === "object" && result !== null
	let isFuntion = typeof result === 'function'
	return isObject || isFunction ? result : obj
}

猜你喜欢

转载自blog.csdn.net/m0_37285193/article/details/114270566