我正在尝试检查对象是否存在并具有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)
答案 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');
}