首页 > 解决方案 > document.hasOwnProperty("hidden") 返回 false,但 document 的属性为 hidden

问题描述

我正在尝试使用 document.hasOwnProperty 检查文档是否具有“隐藏”属性,但它在 Chrome (74) 中始终返回 false。

我试过 Object.prototype.hasOwnProperty 但这也返回错误。当我尝试对文档进行字符串化和解析时,我将 Location 对象作为属性返回。

console.log(document.hasOwnProperty("hidden"));
console.log(Object.prototype.hasOwnProperty.call(document, "false"));
console.log(JSON.parse(JSON.stringify(document)));
console.log(typeof document.hidden !== "undefined");
console.log(document.hidden);
console.log(Document.prototype.hasOwnProperty.call(document, "hidden"));
console.log(Document.prototype.hasOwnProperty.call(document, "location"));

不应该hasOwnProperty检查对象是否具有与对象类型无关的属性?如果问题已经得到解答,我深表歉意。

标签: javascriptobjectdomhasownproperty

解决方案


的目的hasOwnProperty()是检查某个属性是否定义在实例本身上,而不是通过其继承prototype

在 的情况下document,它正确地返回,false因为该hidden属性实际上是在Document接口上定义的,而不是在实例本身上。

(感谢@Jonas Wilms 的澄清)


推荐阅读