网站首页 > 基础教程 正文
在日常开发中,经常会遇见判断对象是否存在某个特定的属性这种场景,今天来记录一下比较常用的方法(主要是后面三种方法)
- 针对属性值非空来判断
// 这种方法是根据属性值非空
// 属性值为布尔计算值true
const obj = {}
if(!obj.a){
}else{
}
- 针对属性值非undefined来判断
// 这种方法是根据属性值非undefined
const obj = {}
if(obj.a !== undefined){
}else{
}
- 针对自身可遍历属性来判断
// 使用Object.keys()来收集对象属性
// 根据收集的属性数组来判断
var obj = {
a:0,
b:undefined
};
if(Object.keys(obj).includes('a')){
//存在
}else{
}
//Object.keys()只能收集自身可遍历属性
//无法收集不可遍历属性
//比如属性描述符配置了enumerable为false,就不可收集
var obj = Object.create({});
Object.defineProperty(obj, "foo", { value: "bar" });
if(Object.keys(obj).includes('foo')){
//不存在
}else{
}
- 针对自身属性来判断
// 使用obj.hasOwnProperty来判断
// 这种方法可以规避不可遍历的属性
var obj = Object.create({});
Object.defineProperty(obj, "foo", { value: "bar" });
if(obj.hasOwnProperty('foo')){
//存在
}else{
}
//obj.hasOwnProperty只能收集自身属性
//无法收集原型上的属性
Object.prototype.a = 1
if(obj.hasOwnProperty('a')){
}else{
//不存在
}
- 使用in判断属性(无原型链和遍历属性限制)
// 使用in运算符来判断
// 这种方法可以判断自身或者原型上的属性,使用范围最广,无限制
var obj = Object.create({});
Object.defineProperty(obj, "foo", { value: "bar" });
if('foo' in obj){
//存在
}else{
}
Object.prototype.a = 1
if('a' in obj){
//存在
}else{
}
猜你喜欢
- 2024-10-23 js判断对象是否为空的方法归纳 js判断对象是否为空的方法归纳数据
- 2024-10-23 js中的迭代对象是什么 js迭代器iterator
- 2024-10-23 JavaScript遍历对象方法总结,原来有这么多,你掌握了几种?
- 2024-10-23 33个非常实用的JavaScript一行代码,建议收藏
- 2024-10-23 「翻译」JavaScript的可视化学习之六:生成器和遍历器
- 2024-10-23 JavaScript:Object对象的属性方法
- 2024-10-23 JavaScript:ES中的对象属性、Set、Map与对象拷贝
- 2024-10-23 腾讯最爱考的前端面试题:JavaScript 基础
- 2024-10-23 JavaScript ES6 - 使用 gulp 构建脚本编码
- 2024-10-23 判断JavaScript对象属性是否存在:全方位剖析与实践策略
- 最近发表
- 标签列表
-
- jsp (69)
- pythonlist (60)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- mysql教程 (60)
- pythonif (68)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- console.table (62)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)