JavaScript在new的過程中經歷了什麼

舉一個栗子:

function(name,age){
    this.name = name;
    this.age = age;
}

let person = new Person('yy',18)

像上面這麼new 一個對象可以分成四個階段:

1、創建了一個空對象

var obj = new Object();

2、讓Person中的this指向obj,並執行Person的函數體

var result = Person.call(obj);

3、設置原型鏈,將obj的__proto__成員指向了Person函數對象的prototype成員對象

obj.__protp__ = Person.prototype;

4、判斷Person的返回值類型,如果是引用類型,就返回這個引用類型的對象,如果是值類型,就返回obj。

if(typeof(result) == 'object'){
    person = result;
}else{
    person = obj;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章