2014-11-21 30 views
1

這是摘錄。ECMAScript 5中的「採取行動」是什麼意思?

15.2.2.1新對象([值])#Ⓣ
當對象構造被稱爲不帶參數或與一個參數值,採用如下 步驟:

如果值被提供,那麼如果類型(值)是對象,則

如果值 是本機ECMAScript對象,請不要創建新對象,而只需返回值 。

如果該值是主機對象,則採取的操作是 ,並且以依賴於實現的方式返回結果,即 可能依賴於主機對象。

我只是想知道傳遞一個本地對象和傳遞一個主機對象到對象構造函數有什麼不同。換句話說,如果我調用新的對象(文檔),幕後會發生什麼?通過檢查返回值我看不出任何區別。

在此先感謝。

+0

所有這一切意味着主機必須負責轉換主機對象。通常,沒有「發生」。 – dandavis 2014-11-21 07:14:31

回答

0

什麼摘錄的意思是,如果value是爲Document主機對象,例如,那麼它是由實現決定什麼new Object(value)會做(「採取動作[…在實現有關的方式可能取決於「value)以及它將返回的值(」結果以依賴於實現的方式返回,可能取決於「value」)。

即使value是主機對象,大部分時間new Object(value)都不會執行任何操作,並返回value(就像它是本機對象一樣)。在Document的具體情況下,我強烈期望這種行爲。但ECMAScript標準並不要求這樣做。 (DOM規範定義Document類型似乎也不需要它。)

+0

好的闡述。 – 2014-11-21 07:28:14

1

對於本機對象:javascript有不創建新對象並只是返回值。

但是,對於主機對象:JavaScript首先創建一個新的對象,然後只返回值。

這就是規範的意思。希望你能理解!

+1

感謝您的幫助。 :) – 2014-11-21 07:27:58