如何检查对象是否存在并具有X属性?

时间:2018-12-05 11:08:09

标签: javascript object

我正在尝试检查对象是否存在并具有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 :(得分:3)

只需测试object,就可以像在多行示例中一样使用它。

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

testObject(undefined);
testObject({foo: 'bar'});

答案 1 :(得分:1)

只需首先检查对象是否存在:

object && 'foo' in object

答案 2 :(得分:1)

这些示例可以正常工作:

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');
}