JavaScript 中的 not in 运算符

Shraddha Paghdar 2023年10月12日
JavaScript 中的 not in 运算符

对象是 JavaScript 中最常用的键值属性。为了检查某个属性是否存在,JavaScript 提供了几种可能性。今天的帖子将向你展示如何在 JavaScript 中检查对象上是否存在特定属性。

在 JavaScript 中检查属性是否存在

属性与存储在对象中的键值配对。一个 object 可以包含许多这样的属性。JavaScript 中是否存在某个属性由操作符 id in objectObject.prototype.hasOwnProperty() 决定。

JavaScript 中的 Object.prototype.hasOwnProperty()

这是 JavaScript 提供的内置方法,用于检查指定的属性是否属于 Object。它迭代对象并根据结果返回布尔值。

语法:

Object.prototype.hasOwnProperty(prop);

此函数将 prop 作为 string 格式的输入。它是一个强制性参数。此方法只检查给定的属性是否存在于对象中,而不管值如何。即使属性值为 nullundefined,它也会返回 true。也可以在 Array 上调用此方法,因为该数组是从 Object 派生的。有关更多信息,请阅读 hasOwnProperty() 方法的文档。

const inputObject = {
  id: 42,
  name: 'John Doe'
};

console.log(inputObject.hasOwnProperty('name'));
if (!inputObject.hasOwnProperty('email')) {
  inputObject.email = 'Johndoe@gmail.com';
}
console.log(inputObject);

在上面的代码块中,我们定义了对象 idname 的两个属性。当你传递 inputObject.hasOwnProperty('name') 时,它会检查 inputObject 中是否存在 name 属性。如果要检查相反的条件,请添加!在条件之前,它将否定检查。例如,如果对象内不存在新属性,则可以添加新属性。上面代码给出的输出可以在下面看到。

输出:

true
{
  email: "Johndoe@gmail.com",
  id: 42,
  name: "John Doe"
}

JavaScript 中的 in 运算符

它是 JavaScript 提供的内置方法,用于检查对象或原型链是否拥有指定的属性。它迭代对象并根据结果返回布尔值。

语法:

prop in object

此函数将 prop 作为 string 格式的输入。它是一个强制性参数。此方法仅检查给定的属性或数组索引是否存在于 Object 或其 prototype chain。也可以在 Array 上调用此方法,因为该数组是从 Object 派生的。有关更多信息,请阅读 in operator 方法的文档。

hasOwnPropertyin 运算符之间的主要区别在于,如果属性是在对象内部继承的或尚未声明,则前一个返回 false。相比之下,in 运算符不会检查对象原型链中的指定属性。例如,Object 基类将 hasOwnProperty 作为一个函数,因此 hasOwnProperty 将返回 false,而 in 运算符将返回 true

const inputObject = {
  id: 42,
  name: 'John Doe'
};

console.log('name' in inputObject);
if (!('phone' in inputObject)) {
  inputObject.phone = '7878787878';
}
console.log(inputObject);

在上面的代码块中,我们定义了对象 idname 的两个属性。当你在 inputObject 中传递 name 时,它会检查 inputObject 中是否存在 name 属性。如果要检查相反的条件,请添加!在条件之前,否定检查。例如,你可以添加一个新属性 phone,如果它不存在于对象中。上面的代码片段给出的输出如下所示。

输出:

true
{
  id: 42,
  name: "John Doe",
  phone: "7878787878"
}
Shraddha Paghdar avatar Shraddha Paghdar avatar

Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.

LinkedIn

相关文章 - JavaScript Operator