當您運行在瀏覽器下面的代碼,或在Node.js的,你得到的意見所列的預期成果:爲什麼是null和未定義類型的DOMWindow?
Object.prototype.toString.call(undefined); // "[object Undefined]"
Object.prototype.toString.call(null); // "[object Null]"
當您在PhantomJS的代碼,但是,輸出爲[object DOMWindow]
在這兩種情況。
這似乎很奇怪,因爲undefined
和null
都是原生類型。該typeof
運營商似乎工作,因爲它在其他環境(包括typeof null === "object"
怪癖)做,所以它會出現PhantomJS並至少有不確定型的概念:
typeof undefined; // "undefined"
它還聲稱,Object.prototype.toString
包含本地代碼,這可能表明Phantom本身沒有做任何修改實現的東西(我不知道是否是這種情況 - 但我沒有找到任何有用的源代碼):
Object.prototype.toString.toString(); // "function toString() { [native code] }"
那麼爲什麼PhantomJS不使用(或至少暴露)正確的[[Class]]
屬性值爲null
和undefined
,有沒有辦法改變這種情況?我知道我可以使用不同的方法來確定類型,但我寧願不必。
這聽起來像一個錯誤。 – SLaks
@SLaks - 是的,這是我的第一個想法,但它不是這是不尋常的或很少發現的代碼...我非常懷疑我是第一個遇到它,但我沒有找到任何參考它在問題跟蹤器的任何地方。 –
出於好奇:你試圖解決什麼樣的問題或哪種情況受到這種行爲的影響? –