J

JavaScript 检查对象中是否存在属性

2025-06-04

JavaScript 检查对象中是否存在属性

您可能需要确定某个对象是否具有特定属性。

假设我们有一个用户对象。可以选择设置 email 属性。如果没有设置,我们希望显示一个表单,以便用户填写他们的邮箱地址。

我们如何确定这个字段是否存在?

const userOne = {
  name: 'Chris Bongers',
  email: 'info@daily-dev-tips.com',
};

const userTwo = {
  name: 'John Do',
};
Enter fullscreen mode Exit fullscreen mode

要回答这个问题,有几种方法可以实现。我们来看看最常见的三种。

使用 hasOwnProperty 来判断对象是否具有属性

通过使用hasOwnProperty我们可以评估一个对象是否具有Own属性。

让我们看看它如何处理我们的示例数据。

console.log(userOne.hasOwnProperty('email'));
// Returns: true

console.log(userTwo.hasOwnProperty('email'));
// Returns: false
Enter fullscreen mode Exit fullscreen mode

完美!不过使用这个方法有个问题:它只适用于Own属性,不适用于扩展对象属性。

你可能知道,对象自带toString方法,如果我们尝试检查该方法是否存在,它将返回 false。(尽管该方法确实存在)

console.log(userOne.toString());
// Returns: [object Object]

console.log(userOne.hasOwnProperty('toString'));
// Returns false
Enter fullscreen mode Exit fullscreen mode

使用 in 来判断对象是否具有属性

检查对象是否具有属性的另一种更明确的方法是使用in

这个可以检查自己的和继承的属性。

console.log('email' in userOne);
// Returns: true

console.log('email' in userTwo);
// Returns: false

console.log('toString' in userOne);
// Returns: true
Enter fullscreen mode Exit fullscreen mode

使用 undefined 来判断对象是否具有属性

最后一种方法是使用未定义检查。此方法适用于省略的属性,但如果属性存在但值未定义,则可能会带来麻烦。

console.log(userOne.email !== undefined);
// Returns: true

console.log(userTwo.email !== undefined);
// Returns: false

console.log(userOne.toString !== undefined);
// Returns: true
Enter fullscreen mode Exit fullscreen mode

现在让我们看看下面的例子中发生了什么:

const userThree = {
  name: 'Steve Stevenson',
  email: undefined,
};

console.log(userThree.email !== undefined);
// Returns: false
Enter fullscreen mode Exit fullscreen mode

支票是可以接受的,但这不是我们想要的。

结论

当试图找出一个对象是否具有特定属性时,我们需要考虑我们想要的安全性。

我一般不建议使用该undefined支票。

如果仅评估Own属性,则它hasOwnProperty是一种固体溶液。

但您可能希望安全起见并使用in检查来确定对象是否具有属性。

感谢您的阅读,让我们联系起来!

感谢您阅读我的博客。欢迎订阅我的电子邮件简报,并在FacebookTwitter上与我联系。

文章来源:https://dev.to/dailydevtips1/javascript-check-if-property-exists-in-object-57ed
PREV
JavaScript 代理 Fetch API
NEXT
我写了 1000 篇文章,下一步是什么?