new
过程:
- 创建一个新对象
- 将新的对象的
__proto__
指向被实例化函数的prototype
- 将被实例化函数的
this
指向 新的对象 - 如果函数返回的是对象则返回函数结果,否则返回新的对象
function myNew() {
const obj = {};
const constructor = [].shift.call(arguments);
obj.__proto__ = constructor.prototype;
const reslut = constructor.apply(obj, arguments);
return reslut && reslut instanceof Object ? reslut : obj;
}