JavaScript對象系統深入剖析-2.函數對象

2.       函數對象(Function Object)

 

@吳穹Adam (新浪微博)

 

函數對象首先是一個對象,所以,它也有__proto__鏈接,也有Delegation。函數對象還有一個特殊之處就是它會有一個叫做prototype的屬性(又是prototype?, 對,這就是我一直用__proto__鏈接來代表上文提到的prototype linkage,這樣可以避免混淆)。

 

當用var ff = function(){}定義一個函數時,JS會生成一個函數對象,這個函數對象的__proto__指針指向Function.prototype, 同時還會有一個property屬性,其值是一個對象,這個對象隻有一個屬性是構造函數,構造函數的值就是這個函數的定義function(){},而這個對象的__proto__指針則指向Object.Prototype,如下圖:

 

瞭解瞭函數對象,再看看它如何發揮作用:當用new激活一個函數時,一個新對象會被創建出來,其內容是執行函數的返回結果,而這個對象的__proto__鏈接指向函數的prototype屬性對象,如下面的例子所示:

抽象一下,就是這樣:

摘自 adwu73的專欄

發佈留言