【发布时间】:2014-03-24 05:18:45
【问题描述】:
我惊讶地发现在 Firefox 控制台中:
> 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。 -
在 FireFox 中它位于
proto(proto(document)); // DocumentPrototype,我相信很少有规范说明 Host Objects 如window和 @ 987654329@其实是要实现的,就是他们应该实现的。 -
作为一般的经验法则,我只想说对于 host Objects,使用
in检查 native objects(尤其是 @ 987654331@s),使用hasOwnProperty检查。如果你想知道区别; stackoverflow.com/a/7614380/1615483
标签: javascript html dom