我很驚訝地發現,在Firefox控制檯:hasOwnProperty()是否對DOM元素進行了標準化測試?
> document.mozPointerLockElement
> null
> 'mozPointerLockElement' in document
> true
> document.hasOwnProperty('mozPointerLockElement')
> false
而在Chrome控制檯相當於hasOwnProperty()
測試返回true:
> document.webkitPointerLockElement
> null
> 'webkitPointerLockElement' in document
> true
> document.hasOwnProperty('webkitPointerLockElement')
> true
不HTML標準指定一個文件的屬性應該是直接的能是否可靠地使用hasOwnProperty()
進行測試,或者是所有這些測試都依賴於實施而不是便攜式?
很難確切地知道某件事不存在,但如果這種行爲被標準覆蓋了,我會非常驚訝。 '.hasOwnProperty()'函數是一個JavaScript的東西,而DOM真的與JavaScript無關。他們甚至不使用JavaScript語法來描述API。 – Pointy
在_FireFox_它在'proto(proto(document)); // DocumentPrototype',我相信很少有專門的說明,實際上必須實現諸如'window'和'document'這樣的_Host Objects_,它們應該實現什麼。 –
作爲一般的經驗法則,我只是說_host Objects_,使用'in'來檢查_native objects_(特別是''instanceof's),使用'hasOwnProperty'來檢查。如果你想知道差異, http://stackoverflow.com/a/7614380/1615483 –