手写new 方法

343 阅读1分钟

function Person(){

  this.name = name;

  this.age = age;

}

  var p1 = new Person('珠峰',11)

function myNew(...arg){

  var obj = {};

   var Constructor = arg.shift();

   obj.__proto__ = Constructor.prototype;

   let res = Constructor.apply(obj,arg);//.call(obj,...arg)使用call的方法实现

   return typrOf res === 'object' ? res : obj;

}

var p2 = myNew(Person,'珠峰',11);

console.log(p1);

console.log(p2);//查看两个打印是否一样