前端面试

js手动实现new方法

2019-02-14  本文已影响271人  奔跑的丸子129

要自己实现一个new功能,实现要知道new操作符都干了些什么,其实总的来说就四步:
1.创建一个空对象
2.链接到原型
3.绑定this值
4.返回新对象
知道了这些步骤,我们就可以自己模拟实现new方法了

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;//如果返回值是一个对象就返回该对象,否则返回构造函数的一个实例对象
}

接下来测试下:

function People(name,age){
  this.name = name;
  this.age = age;
}
//通过new创建构造实例
let people1 = new People('Jack',20);
console.log(people1.name) //Jack
console.log(people1.age) //20

//通过create方法创造实例
let people2 = create(People,'Rose',18);//调用自定义create实现new
console.log(people2.name) //Rose
console.log(people2.age) //18

经测试这个create方法是合理的。
本文参考:https://blog.csdn.net/liwenfei123/article/details/80580883
https://blog.csdn.net/LL18781132750/article/details/81111634

上一篇 下一篇

猜你喜欢

热点阅读