在聲明復雜類型的變量(如函數)時,我們可以通過構造函數的方式進行聲明。
如:聲明一個函數
var foo = new Function("console.log('i am a function')");
或者通過構造函數的方式新建一些組件時
function F(name){
this.name = name;
}
var f1 = new F('Couzin')
我們可能知道,這樣創造的實例 f1._proto_ = F.prototype ,這樣的結果是通過 new 操作符實現的。
那么,在 new 的過程中發生了什么?
實際上就分為簡單的三個步驟:
- var f1 = {};//創建實例
- f1._proto_ = F.prototype;//創建實例
- F.call(f1);//初始化實例
所以函數 F 中的 this 是實例 f1 的實例變量,只能在 f1 中訪問到。
- F.call(f1);//初始化實例