當你使用new的時候,會:
1.創建一個新的空對象;
2.將this綁定到該對象;
3.添加一個名為__proto__的新屬性,并且指向構造函數的原型(prototype);
4.返回該this對象。
如果你沒有特別理解,那么我們接下來用例子來詳細解釋。首先定義一個構造函數Student,該函數接收兩個參數name和age。
~~~
function Student(name, age){
this.name = name;
this.age = age;
}
~~~
現在我們使用new來創建一個新的對象:
~~~
var first = new Student('John', 26);
~~~
到底發生了什么呢?
1.一個新的對象創建,我們叫它obj;
2.this綁定到obj,任何對this的引用就是對obj的引用;
3.__proto__屬性被添加到obj對象。obj.__proto__會指向Student.prototype;
4.該obj對象被賦值給first變量。
我們可以通過打印測試:
~~~
console.log(first.name);
// John
console.log(first.age);
// 26
~~~