模拟实现js中new的作用

2019-08-06  本文已影响0人  TerdShow
function create() {
  let obj = new Object(); // 1.创建一个空对象
  let Constructor = [].shift.call(arguments); 
  obj.__proto__ = Constructor.prototype; // 2.将空对象的原型对象指向构造函数的原型
  let result = Constructor.apply(obj, arguments); // 3.将构造函数的this指向该对象,执行构造函数,给对象添加属性和方法
  return typeof result === 'object' ? result : obj; // 4.返回这个对象
}

function Man(name,age){
  this.name = name;
  this.age = age;
}

let boy = create(Man, 'john', 18);
console.log(boy);
上一篇 下一篇

猜你喜欢

热点阅读