JS中以new形式建立對象的過程

JS的new操做到底幹了些什麼呢?咱們一步一步來看。函數

好比我定義了一個function,並執行new操做:this

function Foo(){}
var foo = new Foo();

補補腦:
每個函數中都會有一個叫prototype的屬性,類型是object,即一個引用對象。
每個對象中都會有一個叫__proto__的屬性,類型野是object,也是一個引用對象。prototype

首先,當JavaScript引擎執行new操做時,會立刻開闢一個塊內存,建立一個空對象(並將this指向這個對象)。code

接着,執行構造函數Foo(),對這個空對象進行構造(構造函數裏有什麼屬性和方法都一一給這個空白對象裝配上去,這就是爲什麼它叫構造函數了)。對象

然而,給這個空對象添加了一個叫__proto__的屬性,並且這個__proto__指向Foo()的prototype對象。換句話說,就是__proto__ = prototype;ip

相關文章
相關標籤/搜索