手写new 方法

function Person(){app

  this.name = name;this

  this.age = age;prototype

}io

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

function myNew(...arg){function

  var obj = {};object

   var Constructor = arg.shift();方法

   obj.__proto__ = Constructor.prototype;call

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

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

}

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

console.log(p1);

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

相关文章
相关标签/搜索