new一個對象的時候發(fā)生了什么?

function Person(name, age) {
  this.name = name;
  this.age = age;
}
let p = new Person("Alice", 23);
new一個對象的四個過程:

1、創(chuàng)建一個空對象

let obj = {};

2、讓構造函數(shù)中的this指向新對象,并執(zhí)行構造函數(shù)的函數(shù)體

let result = Person.call(obj);

3、設置新對象的proto屬性指向構造函數(shù)的原型對象

obj.__proto__ = Person.prototype;

4、判斷構造函數(shù)的返回值類型,如果是值類型,則返回新對象。如果是引用類型,就返回這個引用類型的對象。

if (typeof(result) == "object") 
    p = result;
else 
    p = obj;
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容