JS 判断属性是否存在
1. 直接判断 obj.a
js
var obj = {
a: 1
};
if (obj.a) {
console.log("存在");
}
2. Object.keys
对象自身的可枚举属性, 不包括原型上的属性。
js
var obj = {
a: 1
};
if (Object.keys(obj).includes("a")) {
console.log("存在");
}
原型上的属性不存在。
js
function A() {}
A.prototype.a = 1;
const obj = new A();
if (Object.keys(obj).includes("a")) {
console.log("存在");
} else {
console.log("不存在"); // true
}
不可枚举的属性
js
const obj = {};
Object.defineProperty(obj, "a", {
enumerable: false,
value: 1
});
if (Object.keys(obj).includes("a")) {
console.log("存在");
} else {
console.log("不存在"); // true
}
3. hasOwnProperty
自有的就可以, 不要求可枚举, 原型上的不行。
js
const obj = {};
Object.defineProperty(obj, "a", {
enumerable: false,
value: 1
});
if (obj.hasOwnProperty("a")) {
console.log("存在"); // true
} else {
console.log("不存在");
}
原型上的属性不存在。
js
function A() {}
A.prototype.a = 1;
const obj = new A();
if (obj.hasOwnProperty("a")) {
console.log("存在");
} else {
console.log("不存在"); // true
}
4. in
不要求可枚举, 也不要求是自有的, 原型上也可以。
js
const obj = {};
Object.defineProperty(obj, "a", {
enumerable: false,
value: 1
});
if ("a" in obj) {
console.log("存在"); // true
} else {
console.log("不存在");
}
js
function A() {}
A.prototype.a = 1;
const obj = new A();
if ("a" in obj) {
console.log("存在"); // true
} else {
console.log("不存在");
}