document.hasOwnProperty("hidden") returns false 但文档隐藏了 属性
document.hasOwnProperty("hidden") returns false but document has the property hidden
我正在尝试使用 document.hasOwnProperty 检查文档是否具有 'hidden' 属性,但在 Chrome (74) 中它总是 returns 错误。
我试过 Object.prototype.hasOwnProperty 但那也是 returns 错误的。当我尝试对文档进行字符串化和解析时,我以 属性.
的形式返回了 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
检查对象是否具有 属性 而不管对象类型?如果问题已经得到解答,我深表歉意。
hasOwnProperty()
的目的是检查某个属性是否定义在实例本身,而不是通过它的[=11=继承].
在 document
的情况下,returns false
是正确的,因为 hidden
属性 实际上是在 Document
接口上定义的而不是实例本身。
(感谢@Jonas Wilms 的澄清)
暂时复制并更正@haim770 已删除的答案:
The purpose of hasOwnProperty()
is to check whether a certain property is defined on the object itself and is not inherited through its prototype
.
In the case of document
, it rightfully returns false
since the hidden
property is actually defined on [Document
] and not on [the document object] itself.
console.log('' + Object.getPrototypeOf(document));
console.log('' + Object.getPrototypeOf(Object.getPrototypeOf(document)));
console.log(document.__proto__.__proto__.hasOwnProperty('hidden'));
console.log(Object.getOwnPropertyDescriptor(Document.prototype, 'hidden'));
我正在尝试使用 document.hasOwnProperty 检查文档是否具有 'hidden' 属性,但在 Chrome (74) 中它总是 returns 错误。
我试过 Object.prototype.hasOwnProperty 但那也是 returns 错误的。当我尝试对文档进行字符串化和解析时,我以 属性.
的形式返回了 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
检查对象是否具有 属性 而不管对象类型?如果问题已经得到解答,我深表歉意。
hasOwnProperty()
的目的是检查某个属性是否定义在实例本身,而不是通过它的[=11=继承].
在 document
的情况下,returns false
是正确的,因为 hidden
属性 实际上是在 Document
接口上定义的而不是实例本身。
(感谢@Jonas Wilms 的澄清)
暂时复制并更正@haim770 已删除的答案:
The purpose of
hasOwnProperty()
is to check whether a certain property is defined on the object itself and is not inherited through itsprototype
.In the case of
document
, it rightfully returnsfalse
since thehidden
property is actually defined on [Document
] and not on [the document object] itself.
console.log('' + Object.getPrototypeOf(document));
console.log('' + Object.getPrototypeOf(Object.getPrototypeOf(document)));
console.log(document.__proto__.__proto__.hasOwnProperty('hidden'));
console.log(Object.getOwnPropertyDescriptor(Document.prototype, 'hidden'));