// Отравление объекта.prototypeObject.prototype.bar = 1; var foo = {goo: undefined}; foo.bar; // 1'bar 'в foo; // truefoo.hashownproperty ('bar'); // falsefoo.hashownproperty ('Goo'); // истинныйЗдесь только HasownProperty может дать правильный ответ, который очень необходим, когда дело доходит до пересечения свойств объекта. В JavaScript нет другого способа сказать, определяется ли атрибут в самом объекте или унаследован от цепочки прототипа.
HasownProperty как собственность
JavaScript не устанавливает HasownProperty как конфиденциальное слово, что означает, что вы можете иметь свойство с именем HasownProperty. В настоящее время вы больше не можете использовать свой метод HasownProperty для оценки свойств, поэтому вам необходимо использовать метод внешнего HasownProperty для вынесения суждений.
var foo = {hasownproperty: function () {return false; }, bar: 'здесь Be Dragons'}; foo.hasownproperty ('bar'); // всегда возвращает false // Использовать HasownProperty другого объекта и назовите его с помощью «этого» foo ({}). Hasownproperty.call (foo, 'bar'); // true // Также можно использовать HasownProperty из объекта // прототип для этого actuleabject.prototype.hashownproperty.call (foo, 'bar'); // истинныйСуммировать
Судя по тому, что атрибут объекта существует, HasownProperty - единственный метод, на который можно полагаться. Здесь мы также хотим напомнить вам, что, когда мы используем в цикле, чтобы пройти объекты, использование HasownProperty будет хорошо избегать проблем, вызванных расширением объекта прототипа.
Ниже приведены дополнения от других пользователей сети:
HasownProperty () на прототипе объекта объекта в JavaScript используется для определения того, что свойство определяется в самом объекте, а не унаследовано от цепочки прототипа.
obj.hashownproperty (опора)
Parameter Prop
Имя строки атрибута или символ (ES6) для обнаружения
o = new Object (); o.prop = 'существует'; o.hashownproperty ('prop'); // вернуть trueo.hashownproperty ('tostring'); // вернуть false.hashownproperty ('hasownproperty'); // вернуть ложьИспользуйте HasownProperty в качестве названия свойства объекта
Поскольку JavaScript не использует HasownProperty в качестве чувствительного слова, вполне вероятно, что мы будем называть одно свойство объекта как HasownProperty, чтобы мы больше не могли использовать метод HasownProperty прототипа объекта, чтобы определить, является ли свойство из цепочки прототипа.
var foo = {hasownproperty: function () {return false; }, bar: 'здесь Be Dragons'}; foo.hasownproperty ('bar'); // всегда возвращать ложьКак решить эту проблему, не используя этот объект. Нам нужно использовать реальный метод HasownProperty в цепочке прототипа:
({}). hasownproperty.call (foo, 'bar'); // true // или: object.prototype.hashownproperty.call (foo, 'bar'); // истинныйСсылка: https://developer.mozilla.org/zh-cn/docs/web/javascript/reference/global_objects/object/hasownproperty