舉一個栗子:
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;
}