Как я могу проверить, существует ли объект и имеет ли он свойство X? - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь проверить, существует ли объект и обладает ли он свойством X.

Сначала я попробую это так:

let object = {
    foo: 1
}

console.log('foo' in object)
console.log(object.hasOwnProperty('foo'))
console.log(typeof(object.foo) !== undefined)

Но я понял, что если объект не определен, всеони возвращают ошибки.

Я знаю, что могу использовать:

let object = undefined

if (object) {
    console.log('foo' in object)
    console.log(object.hasOwnProperty('foo'))
    console.log(typeof (object.foo) !== undefined)
}

Чтобы проверить, существует ли объект и имеет ли свойство X, но я хотел бы знать, могу ли я возобновить все это водна линия.Что-то вроде:

typeof(object) !== undefined && ('foo' in object)

Ответы [ 3 ]

0 голосов
/ 05 декабря 2018

Сначала используйте проверку существования объекта:

object && 'foo' in object
0 голосов
/ 05 декабря 2018

эти примеры отлично работают:

let object = {
  foo: 1
};

if (object && object.hasOwnProperty('foo')) {
  console.log(object['foo']);
} else {
  console.log('object has no foo key');
}

let obj2 = {};

if (obj2 && obj2.hasOwnProperty('foo')) {
  console.log(obj2['foo']);
} else {
  console.log('obj2 has no foo key');
}

let obj3;

if (obj3 && obj3.hasOwnProperty('foo')) {
  console.log(obj2['foo']);
} else {
  console.log('obj3 has no foo key');
}

Для этого я понятия не имею

if (obj3 && obj3.hasOwnProperty('foo')) {
  console.log(obj2['foo']);
} else {
  console.log('obj3 has no foo key');
}
0 голосов
/ 05 декабря 2018

Вы можете использовать его так же, как вы это делали в своем примере с несколькими строками, просто протестировав object.

function testObject(object) 
{
  if (object && ('foo' in object)) {
    console.log(true);
  } else {
    console.log(false);
  }
}

testObject(undefined);
testObject({foo: 'bar'});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...