1. 使用 in
运算符:
- 如果对象
obj
或其原型链中包含名为 “key” 的属性,则返回true
。 - 如果对象
obj
不包含名为 “key” 的属性,并且它的原型链上也不存在该属性,则返回false
。
let obj = {
name: "Jerry",
age: 18,
};
console.log("name" in obj); // true
console.log("toString" in obj); // true
由于
toString
方法存在于Object
的原型中,因此使用in
运算符检查"toString" in obj
会返回true
,但obj.hasOwnProperty("toString")
返回false
,因为该属性不是直接属于obj
对象的。
2. 使用 hasOwnProperty()
方法:
- 如果对象
obj
直接拥有名为 “key” 的属性,则返回true
。 - 如果对象
obj
不直接拥有名为 “key” 的属性,或者它的原型链上存在该属性,则返回false
。
let obj = {
name: "Jerry",
age: 18,
};
console.log(obj.hasOwnProperty("name")); // true
console.log(obj.hasOwnProperty("toString")); // false
3. 使用 Object.keys()
方法:
Object.keys()
方法会返回对象自身可枚举的属性组成的数组,然后使用includes()
方法来检查指定的键是否存在于该数组中。
let obj = {
name: "Jerry",
age: 18,
};
console.log(Object.keys(obj).includes("name")); // true
console.log(Object.keys(obj).includes("toString")); // false
如果帮助到您了,可以留下一个赞👍告诉我