提示:根据new的作用来写
new的作用:
- 在内存中创建了一个新对象
- 将新对象的原型指向构造函数的prototype
- 把构造函数里的this指向这个新对象
- 返回这个新对象
代码:
function newway(Fn, ...arg) {
const obj = {} // 1
obj.prototype = Object.create(Fn.prototype) // 2
const obj1 = Fn.apply(obj, arg) // 3
return obj1 instanceof Object ? obj1 : obj; // 4
}
总结
使用new操作符时,构造函数内的this就指向相应的实例化对象,未使用new操作符时,为普通函数调用,全局函数内的this指向window。