「寫」一個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

相關文章
相關標籤/搜索