Как проверить, есть ли у объекта свойство в JavaScript? - PullRequest
1316 голосов
/ 25 сентября 2008

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

Рассмотрим:

x = {'key': 1};
if ( x.hasOwnProperty('key') ) {
    //Do this
}

Это лучший способ сделать это?

Ответы [ 24 ]

1 голос
/ 15 января 2019

Вы можете использовать следующие подходы-

var obj = {a:1}
console.log('a' in obj)               //1
console.log(obj.hasOwnProperty('a'))  //2
console.log(Boolean(obj.a))         //3

Разница между следующими подходами заключается в следующем:

  1. При первом и третьем подходе мы не просто ищем объект, но его Прототип цепи тоже. Если объект не имеет свойства, но свойство присутствует в своей цепочке прототипов, которые он собирается дать правда.

 var obj = {
      a:2,
      __proto__ :{b:2}
    }

    console.log('b' in obj)
    console.log(Boolean(obj.b))
  1. 2-й подход будет проверять только свои собственные свойства. Ex -

var obj = {
      a:2,
      __proto__ :{b:2}
    }

    console.log(obj.hasOwnProperty('b'))
  1. Разница между 1-м и 3-м состоит в том, что если есть свойство, значение которого не определено, 3-й подход даст ложное значение, а первый даст истинное значение.

var obj = {
      b : undefined
    }
    console.log(Boolean(obj.b))
    console.log('b' in obj);
1 голос
/ 14 сентября 2017

Вам необходимо использовать метод object.hasOwnProperty(property). Возвращает true, если объект имеет свойство, и false, если объект не имеет.

0 голосов
/ 20 июня 2018

я использовал это. что очень помогло мне, если у вас есть объекты внутри объекта

if(typeof(obj["key"])=="string"){
    alert("property");
}
0 голосов
/ 09 августа 2014

Если проверяемый вами ключ хранится в переменной , вы можете проверить это следующим образом:

x = {'key': 1};
y = 'key';
x[y];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...