“写”一个js的new运算符

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

比较好奇new运算符的原理,了解了下,分享给你们。javascript

看一下MDN上的简单🌰:java

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()方法,如何达到这种效果?四行代码...this

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

test
clipboard.pngspa

相关文章
相关标签/搜索