Javascript проверка наличия поля

как проверить свойство в объекте js

Для проверки наличия свойства в объекте в JavaScript можно использовать оператор in или метод объекта hasOwnProperty() .

Например, у нас есть объект person с некоторыми свойствами, и мы хотим узнать, есть ли у него свойство name . Мы можем использовать оператор in следующим образом:

const person =  age: 25, gender: 'female' >; if ('name' in person)  console.log('У объекта есть свойство name'); > else  console.log('У объекта нет свойства name'); > 

Если свойство name есть в объекте person , то в консоли будет выведено сообщение «У объекта есть свойство name», в противном случае выведется сообщение «У объекта нет свойства name».

Также мы можем использовать метод hasOwnProperty() объекта person :

const person =  age: 25, gender: 'female' >; if (person.hasOwnProperty('name'))  console.log('У объекта есть свойство name'); > else  console.log('У объекта нет свойства name'); > 

Результат работы этого кода будет аналогичен предыдущему.

Источник

Object.prototype.hasOwnProperty()

Метод hasOwnProperty() возвращает логическое значение, указывающее, содержит ли объект указанное свойство.

Синтаксис

Параметры

Имя проверяемого свойства.

Описание

Каждый объект, произошедший от Object , наследует метод hasOwnProperty . Этот метод может использоваться для определения того, содержит ли объект указанное свойство в качестве собственного свойства объекта; в отличие от оператора in , этот метод не проверяет существование свойств в цепочке прототипов объекта.

Примеры

Пример: использование hasOwnProperty для проверки существования свойства

В следующем примере определяется, содержит ли объект o свойство с именем prop :

= new Object(); o.prop = 'существует'; function changeO()  o.newprop = o.prop; delete o.prop; > o.hasOwnProperty('prop'); // вернёт true changeO(); o.hasOwnProperty('prop'); // вернёт false 

Пример: собственные и унаследованные свойства

Следующий пример показывает разницу между собственными свойствами и свойствами, унаследованными через цепочку прототипов:

= new Object(); o.prop = 'существует'; o.hasOwnProperty('prop'); // вернёт true o.hasOwnProperty('toString'); // вернёт false o.hasOwnProperty('hasOwnProperty'); // вернёт false 

Пример: обход свойств объекта

Следующий пример показывает, как итерироваться по свойствам объекта с пропуском унаследованных свойств. Обратите внимание, что цикл for. in уже проходит только по перечисляемым элементам, так что не надо на основании отсутствия не перечисляемых свойств, показываемых в цикле, считать, что метод hasOwnProperty сам ограничивает свойства только перечисляемыми элементами (как это делает метод Object.getOwnPropertyNames() ).

var buz =  fog: 'stack' >; for (var name in buz)  if (buz.hasOwnProperty(name))  alert('это точно туман (' + name + '). Значение: ' + buz[name]); > else  alert(name); // toString или что-то ещё > > 

Пример: hasOwnProperty как свойство

JavaScript не защищает имя свойства hasOwnProperty ; таким образом, вполне может существовать объект с таким свойством, поэтому для получения правильного результата нужно использовать внешний метод hasOwnProperty :

var foo =  hasOwnProperty: function()  return false; >, bar: 'Тут драконы' >; foo.hasOwnProperty('bar'); // всегда возвращает false // Используем метод hasOwnProperty другого объекта и вызываем его с передачей foo в качестве this (>).hasOwnProperty.call(foo, 'bar'); // true // Также для этих целей можно использовать свойство hasOwnProperty из прототипа Object Object.prototype.hasOwnProperty.call(foo, 'bar'); // true 

Обратите внимание, что в последнем случае новые объекты не создаются.

Спецификации

Совместимость с браузерами

BCD tables only load in the browser

Смотрите также

Found a content problem with this page?

This page was last modified on 22 окт. 2022 г. by MDN contributors.

Your blueprint for a better internet.

Источник

3 способа проверить в JavaScript, есть ли у объекта свойство

От автора: из-за динамической природы JavaScript вам может потребоваться проверить, существует ли в объекте конкретное свойство. В этом посте вы узнаете о трех распространенных способах проверки наличия свойства в объекте.

1. Метод hasOwnProperty()

У объекта JavaScript есть специальный метод object.hasOwnProperty(propName), который возвращает логическое значение, указывающее, имеет object ли свойство propName. В следующем примере hasOwnProperty() определяется наличие свойств:

Свойство name существует в объекте hero: таким образом, hero.hasOwnProperty(‘name’) возвращается true.

Онлайн курс по JavaScript

Научитесь создавать приложения со сложными интерфейсами

Это основной язык для современной веб-разработки — почти 100% сайтов работает на JavaScript. Освойте его с нуля всего за 4 месяца, и вы сможете зарабатывать от 70 000 рублей.

С другой стороны, свойство realName не существует в объекте hero. Как и ожидалось, hero.hasOwnProperty(‘realName’) возвращается false — обозначает отсутствующее свойство.

Имя метода hasOwnProperty() предполагает, что он ищет свойства в собственных свойствах объекта. Проще говоря, собственными свойствами являются те, которые определены непосредственно для объекта.

Даже если у каждого объекта JavaScript есть унаследованное свойство toString (которое является методом, унаследованным от прототипа объекта), hasOwnProperty() оно не определяется как свойство:

2. Оператор in

Оператор in в propName in object также определяет, существует ли свойство propName в object. Давайте используем оператор in, чтобы определить существует ли свойство:

‘name’ in hero оценивается, как ожидается, true, потому что hero содержит свойство name. Однако hero не содержит свойства с именем ‘realName’. В результате ‘realName’ in hero оценивается, как false.

У оператора in короткий синтаксис, и я в большинстве случаев предпочитаю его методу hasOwnProperty(). Вот основное различие между методом hasOwnProperty() и оператором in: последний проверяет не только собственные свойства, но и список унаследованных свойств.

Вот почему, в отличие от hasOwnProperty(), оператор in обнаруживает, что унаследованное свойство toString существует в объекте hero:

3. Сравнение с undefined

Если вы обращаетесь к несуществующему свойству объекта, результат будет undefined. Давайте рассмотрим пример:

hero.realName оценивается undefined, потому что свойство realName отсутствует. Теперь вы можете понять идею: давайте сравним с undefined, чтобы определить наличие свойства.

hero.name !== undefined оценивается, как true, что показывает наличие свойства. С другой стороны, hero.realName !== undefined оценивается false, что указывает на отсутствие realName.

Я сравнивал с undefined, чтобы определить существование свойства в течение довольно долгого времени. Это простой, но грязный подход.

Обратите внимание, что этот подход может генерировать ложноотрицательный результат. Если свойство существует, но имеет значение undefined (этот случай, однако, встречается редко), сравнение с undefined оценивается неверно false:

Даже если свойство name существует (но имеет значение undefined), hero.name !== undefined оценивается как false: что неправильно указывает на отсутствие свойства.

4. Заключение

Есть 3 основных способа проверить, существует ли свойство. Первый способ — вызвать object.hasOwnProperty(propName). Метод возвращает true, если propName существует в object, и false в противном случае. Обратите внимание, что hasOwnProperty() выполняет поиск только в пределах собственных свойств объекта.

Второй подход использует оператор propName in object. Оператор оценивается true для существующего свойства, и false в противном случае. Оператор in ищет наличие свойств как в собственных, так и в унаследованных свойствах объекта.

Наконец, вы можете просто использовать object.propName !== undefined и сравнивать с undefined напрямую.

Автор: Dmitri Pavlutin

Онлайн курс по JavaScript

Научитесь создавать приложения со сложными интерфейсами

Это основной язык для современной веб-разработки — почти 100% сайтов работает на JavaScript. Освойте его с нуля всего за 4 месяца, и вы сможете зарабатывать от 70 000 рублей.

Редакция: Команда webformyself.

Источник

Читайте также:  Html and character encoding
Оцените статью