手写JS(二)--实现new

322 阅读1分钟
function MyNew(fun) {
  const obj = {};
  obj.__proto__ = fun.prototype;
  let ret = fun.apply(obj, [...arguments].slice(1));
  if ((typeof ret === "object" || typeof ret === "function") && ret !== null) {
    return ret;
  }
  return obj; 
}
function Person(name) {
  this.name = name;
}
const p = MyNew(Person, 'visa');