當使用 new 關鍵字呼叫建構函式時,通常假設函式會傳回新建立的目的。但是,在特定情況下,可以傳回非 this 值。
在 JavaScript 中,控制此行為的確切條件在 ECMAScript 規範的函數物件的內部 [[Construct]] 屬性中定義。呼叫時,此屬性執行下列步驟:
因此,建構子的回傳值會決定是傳回新建立的物件還是not:
測試新建立的物件是否與先前建立的物件確實不同一個由建構函式傳回,可以檢查: (new Foo() instanceof Foo) === false.
以上是為什麼建構子有時會傳回非 this 值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!