JavaScript 中的 not in 运算符
 
对象是 JavaScript 中最常用的键值属性。为了检查某个属性是否存在,JavaScript 提供了几种可能性。今天的帖子将向你展示如何在 JavaScript 中检查对象上是否存在特定属性。
在 JavaScript 中检查属性是否存在
属性与存储在对象中的键值配对。一个 object 可以包含许多这样的属性。JavaScript 中是否存在某个属性由操作符 id in object 或 Object.prototype.hasOwnProperty() 决定。
JavaScript 中的 Object.prototype.hasOwnProperty()
这是 JavaScript 提供的内置方法,用于检查指定的属性是否属于 Object。它迭代对象并根据结果返回布尔值。
语法:
Object.prototype.hasOwnProperty(prop);
此函数将 prop 作为 string 格式的输入。它是一个强制性参数。此方法只检查给定的属性是否存在于对象中,而不管值如何。即使属性值为 null 或 undefined,它也会返回 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);
在上面的代码块中,我们定义了对象 id 和 name 的两个属性。当你传递 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 方法的文档。
hasOwnProperty 和 in 运算符之间的主要区别在于,如果属性是在对象内部继承的或尚未声明,则前一个返回 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);
在上面的代码块中,我们定义了对象 id 和 name 的两个属性。当你在 inputObject 中传递 name 时,它会检查 inputObject 中是否存在 name 属性。如果要检查相反的条件,请添加!在条件之前,否定检查。例如,你可以添加一个新属性 phone,如果它不存在于对象中。上面的代码片段给出的输出如下所示。
输出:
true
{
  id: 42,
  name: "John Doe",
  phone: "7878787878"
}
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