3
我注意到document.getElementById
是Firefox和Chrome中的一個函數,而typeof
認爲它是IE8中的一個對象(至少)。爲什麼document.getElementById在IE8中考慮了一個對象
任何人都有一個想法,爲什麼?
我注意到document.getElementById
是Firefox和Chrome中的一個函數,而typeof
認爲它是IE8中的一個對象(至少)。爲什麼document.getElementById在IE8中考慮了一個對象
任何人都有一個想法,爲什麼?
IE8 (attempts to) implementECMAScript 3其中typeof
運算符結果是爲主機對象定義的實現,無論對象是否實現[[call]]。在ES5中,可調用主對象必須返回"function"
。
見的ECMAScript 3
表比較在ECMAScript 5.1 http://www.ecma-international.org/ecma-262/5.1/#sec-11.4.3
+1實際上得到的東西的根源。基本上,IE8正在實施它發佈時的標準;新的瀏覽器正在實現標準的更新版本,同時標準也發生了變化。 – Spudley
因此,基本上,如果我錯了,根據EC3,任何不是本地的,undefined,null,布爾值,數字或字符串都沒有'官方'類型的對象?所以我可以實現'typeof',其中'{}'是一個函數,'function(){}'是一個對象,並且仍然完全符合(使用EC3)? – Stilltorik
@Stilltorik否,因爲它們都是本地的。主機對象是由JavaScript主機提供的對象。就像瀏覽器提供的document.getElementById等一樣,但在語言本身中是不可能的,因爲語言不應該與瀏覽器綁定。 – Esailija