“写”一个js的new运算符

shushushu
new 运算符 创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。

比较好奇new运算符的原理,了解了下,分享给大家。

看一下MDN上的简单?:

function Person(name, age, sex) {
   this.name = name;
   this.age = age;
   this.sex = sex;
}
var rand = new Person("Rand McNally", 33, "M");

这样rand就是Person的实例了。长这样:

clipboard.png

自己写一个New()方法,如何达到这种效果?四行代码...

  1. 创建空对象;
  2. 空对象的__proto__属性指向构造函数的原型对象;
  3. 将构造函数的this指向空对象,传参并运行该构造函数;
  4. 返回对象。
function New (constructor, ...args) {
    const obj = {};
    obj.__proto__ = constructor.prototype;
    constructor.call(obj, ...args);
    return obj;
}

test
clipboard.png

阅读 1.1k
534 声望
24 粉丝
0 条评论
534 声望
24 粉丝
文章目录
宣传栏