Я пытаюсь проверить, есть ли у документа свойство «hidden», используя document.hasOwnProperty, но всегда возвращает false в Chrome (74).
Я пробовал Object.prototype.hasOwnProperty, но это тоже возвращает false. Когда я попытался структурировать и проанализировать обратно документ, я получил объект 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
не должен проверять, есть ли у объекта свойство независимо от типа объекта? Я прошу прощения, если на вопрос уже был дан ответ.
2 ответа
Цель hasOwnProperty()
проверяет, определено ли определенное свойство в самом экземпляре и не наследуется ли оно через prototype
.
В случае document
он по праву возвращает false
, поскольку свойство hidden
фактически определяется в интерфейсе Document
, а не в самом экземпляре.
(спасибо @Jonas Wilms за разъяснения)
Копирование и исправление удаленного ответа @ haim770 на данный момент:
Цель
hasOwnProperty()
проверяет, определено ли определенное свойство в самом объекте и не унаследовано ли оно черезprototype
.В случае
document
он по праву возвращаетfalse
, поскольку свойствоhidden
фактически определено в [Document
], а не в самом [объекте документа].
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'));
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.