当测试一个对象是否有键时,我们可以使用Object.keys()
或Object.hasOwnProperty()
。
考虑一个对象{ a: 1 }
。
console.log(Object.keys({ a: 1 })); // [ 'a' ]
现在,当我使用Object.hasOwnProperty()
时,我得到true
:
console.log('a' in { a: 1 }); // true
console.log({ a: 1 }.hasOwnProperty('a')); // true
但是如果我使用Object.keys()
,我会得到false
:
console.log('a' in Object.keys({ a: 1 })); // false
为什么是假
?
最佳答案
实际上 Object.keys({ a: 1 })
将返回 [ 'a' ]
,它是一个包含对象键的数组。该语句将返回false
:
console.log('a' in ['a']); // false
所以你可以使用:
console.log(Object.keys({ a: 1 }).includes('a')); // true
但简单地使用更直接:
console.log({ a: 1 }.hasOwnProperty('a')); // true
关于javascript - Object.keys() 和 Object.hasOwnProperty() 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61552262/