hasOwnProperty 在 FF 中返回 false

hasOwnProperty returns false in FF

本文关键字:返回 false FF hasOwnProperty      更新时间:2023-09-26

我正在尝试为我的框架创建一个方法,该方法将对元素中的文本执行某些操作,但在FF和IE中存在问题。

<div id="myDiv" style="border: 1px solid red;">
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas suscipit lacus non hendrerit cursus.
</div>
<script>
    console.log(document.getElementById('myDiv').hasOwnProperty("innerHTML"));
</script>

这在 FF 和 IE 中返回 false。尽管它在 Chrome 中返回 true。知道这是为什么吗?

从 Chrome 43 开始,根据规范,innerHTML 属性位于 Element.prototype 上(作为 getter/setter 对),而不是元素实例。 Firefox 和 IE 正确地实现了该规范。 Chrome 违反了规范,因为他们声称从 JS 到 C++ 的调用会更慢,如果他们把它放在原型上(尽管在实践中,SpiderMonkey 设法比 V8 更快地调用 DOM 属性获取者)。

有关此更改的详细信息,请参阅:https://developers.google.com/web/updates/2015/04/DOM-attributes-now-on-the-prototype?hl=en