对new关键字的描述:引自MDN
new关键字会做以下操作:
1.创建一个空的简单Javascript对象 (即{});
2.链接带对象(即设置该对象的构造函数)到另一个对象;
3.将步骤1新创建的对象作为this的上下文;
4.如果该函数没有返回对象,则返回this;
function myNew(fn) {// 以构造函数fn的prototype为原型 创建一个新的简单对象let o = Object.create(fn.prototype)// 改变fn的this指向到o,并执行fnlet k = fn.call(o);// 如果构造函数没有返回对象,则返回oif (typeof k === 'object') {return k;} else {return o;}}