1. 程式人生 > >new 運算符幹了什麽

new 運算符幹了什麽

pre this指針 發現 nbsp str 研究 IV ron 繼承

為了追本溯源, 我順便研究了new運算符具體幹了什麽?發現其實很簡單,就幹了三件事情.

var obj  = {};
obj.__proto__ = F.prototype;
F.call(obj);

第一行,我們創建了一個空對象obj;

第二行,我們將這個空對象的proto成員指向了F函數對象prototype成員對象;

第三行,我們將F函數對象的this指針替換成obj,然後再調用F函數.

我們可以這麽理解: 以 new 操作符調用構造函數的時候,函數內部實際上發生以下變化:

1、創建一個空對象,並且 this 變量引用該對象,同時還繼承了該函數的原型。

2、屬性和方法被加入到 this 引用的對象中。

3、新創建的對象由 this 所引用,並且最後隱式的返回 this。

new 運算符幹了什麽