new操作符做了什么事情,手写实现一个new操作
2021-03-08 本文已影响0人
宏_4491
new操作符做了什么事情,手写实现一个new操作
答:
- var obj = {} //创建一个空对象。
- obj.proto = Fun.prototype //空对象的proto指向构造函数的原型对象。
- Fun.call(obj) // 构造函数的this指向创建的空对象。
实现一个new
function _new(fn, ...arg) {
const obj = Object.create(fn.prototype);
const ret = fn.apply(obj, arg);
// 根据规范,返回 null 和 undefined 不处理,依然返回obj,不能使用
return ret instanceof Object ? ret : obj;
}