网站建设太金手指六六二九,代发新闻稿的网站,公司建设网站的申请,网站及系统建设维护前言#xff1a;在项目的业务逻辑中#xff0c;有些场景会用到对象属性是否存在的判断。那么就需要我们选择适合业务的判断逻辑。 1. obj.name
通过 obj.name 判断属性是否存在#xff0c;有个缺陷#xff0c;就是当属性为 , undefined, null, 0 时#xff0… 前言在项目的业务逻辑中有些场景会用到对象属性是否存在的判断。那么就需要我们选择适合业务的判断逻辑。 1. obj.name
通过 obj.name 判断属性是否存在有个缺陷就是当属性为 , undefined, null, 0 时也是判断的不存在。
let obj {};
obj.name ? 存在 : 不存在; // 不存在let obj { name: };
obj.name ? 存在 : 不存在; // 不存在let obj { name: 0 };
obj.name ? 存在 : 不存在; // 不存在let obj { name: null };
obj.name ? 存在 : 不存在; // 不存在let obj { name: undefined };
obj.name ? 存在 : 不存在; // 不存在let obj { name: yqcoder };
obj.name ? 存在 : 不存在; // 存在
2. Object.keys(obj).includes(name)
拿到这个对象的所有属性名这个属性名要求是自身可枚举的属性。那什么叫自身属性什么叫可枚举属性呐自身属性是自有的属性不是通过构造函数获得的可枚举属性就是可以通过循环遍历对象可以访问到的属性。
// 通过构造函数生成对象
function Create() {}
Create.prototype.name yqcoder;
let obj new Create();
console.log(obj.name); // yqcoder;
Object.keys(obj).includes(name) ? 存在 : 不存在; // 不存在// 不可枚举属性
let obj { name: yqcoder };
Object.defineProperty(obj, name, {enumerable: false,
});
console.log(obj.name); // yqcoder;
Object.keys(obj).includes(name) ? 存在 : 不存在; // 不存在// 正常情况对象属性
let obj { name: yqcoder };
Object.keys(obj).includes(name) ? 存在 : 不存在; // 存在
3. obj.hasOwnProperty(name)
可以不是可枚举的属性只要是自有属性就 ok。
// 通过构造函数生成对象
function Create() {}
Create.prototype.name yqcoder;
let obj new Create();
console.log(obj.name); // yqcoder;
obj.hasOwnProperty(name) ? 存在 : 不存在; // 不存在// 不可枚举属性
let obj { name: yqcoder };
Object.defineProperty(obj, name, {enumerable: false,
});
console.log(obj.name); // yqcoder;
obj.hasOwnProperty(name) ? 存在 : 不存在; // 存在// 正常情况对象属性
let obj { name: yqcoder };
obj.hasOwnProperty(name) ? 存在 : 不存在; // 存在
4. 关键字 in
不要求是自由可枚举的属性了只要能找到就 ok
// 通过构造函数生成对象
function Create() {}
Create.prototype.name yqcoder;
let obj new Create();
console.log(obj.name); // yqcoder;
name in obj ? 存在 : 不存在; // 存在// 不可枚举属性
let obj { name: yqcoder };
Object.defineProperty(obj, name, {enumerable: false,
});
console.log(obj.name); // yqcoder;
name in obj ? 存在 : 不存在; // 存在// 正常情况对象属性
let obj { name: yqcoder };
obj.hasOwnProperty(name) ? 存在 : 不存在; // 存在