javascript - Object.keys() 和 Object.hasOwnProperty() 之间的区别?

标签 javascript

当测试一个对象是否有键时,我们可以使用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/

相关文章:

javascript - 如何使用 jQuery 在文本中插入超链接?

javascript - 如何在没有突变的情况下分配条件变量?

javascript - 如何从填充的字段中删除 key ?

javascript - 在 TextField 上使用 setValue 的正确方法是什么?

javascript - 按 Enter 键提交没有操作属性的表单

javascript - 应如何使用 Flow 定义具有可选属性的对象的联合?

javascript - 我怎样才能绕过同源政策?

JavaScript 回调同步执行异步调用的问题

javascript - 通过JavaScript获取字符串中第二个空格之前和之后的子字符串?

javascript - 如何从 HTML 和 JavaScript 发布实时视频流?