js实现一个new

2019-10-16  本文已影响0人  LUGY

new 关键字实现了如下过程
1.创建一个空对象 obj ={}
2.链接到原型 obj.proto = Constructor.prototype
3.绑定this值 Constructor.call(obj)
4.返回新对象

function create(){
  //创建一个空对象
  let obj = new Object();
  //获取构造函数
  let Constructor = [].shift.call(arguments);
  //链接到原型
  obj.__proto__ = Constructor.prototype;
  //绑定this值
  let result = Constructor.apply(obj, arguments);//使用apply,将构造函数中的this指向新对象,这样新对象就可以访问构造函数中的属性和方法
  //返回新对象
  return typeof result === "object" ? result : obj;//如果返回值是一个对象就返回该对象,否则返回构造函数的一个实例对象
}
上一篇 下一篇

猜你喜欢

热点阅读