js 構造函數是被什么調用的?
The <愛尬聊_尬聊百科>constructor function Foo is called,這句constructor function具體是怎么調用的?或者調用這個函數的對象是什么?
小帥哥_637 4小時前
我的理解是,如果通過new運算符調用函數,函數的作用就是構造函數,調用結束會返回一個對象,這個對象的上級就是全局對象,因此可以理解為就是全局對象調用了構造函數,產生了新的下級對象。如果不使用new算符,就只是在全局對象上調用函數,這時函數中的屬性的方法添加給全局對象。
deng1742 4小時前
Foo 函數只有在 var foo = new Foo("moment") 這種調用下,才能叫構造函數。此時會創建一個新的對象,Foo 函數中的 this 會指向這個新的對象,如果 Foo 函數沒有返回值(例子中就是這種情況),那通過構造形式調用的這個函數,就會返回剛剛新建的那個對象。
dodonet 4小時前
但是,如果你不通過 new 來調用,如:var notfoo = Foo("globalname") ,這就是個普通函數調用,并且沒有返回值,所以 notfoo 其實是 undefined,并且此時 this 會綁定到全局對象上,此時全局對象會多一個屬性 name,并且 name 的值為 "globalname" 。
沫沫媽咪 4小時前
new是一個運算符,具體誰調用了構造器應該是javascript內部做的,看起來像是那個空對象。
