【对象相关】JS判断对象是否为空的几种方法
创始人
2024-05-31 09:25:32
0

这是一个对象:

let obj={name:' ',id:undefined,fn:function(){}
}

方法:

1.JSON.stringify()

JSON.stringify(obj)==='{}'

问题:JSON序列化无法序列化undefined、方法等,所以对象里有这些类型的都无法被识别,所以这个方法是有缺陷的

2. for in + hasOwnProperty

function objIsNull (obj) {for (let k in obj) {if (obj.hasOwnProperty(k)) {return false}}return true
}
console.log(objIsNull(obj));
  • 通过for in遍历对象的可枚举属性,通过hasOwnProperty来判断这个对象是否有这个k属性,有就说明对象不为空,否则就是空对象,这里封装了函数

问题:不能解决不可枚举属性

3. Object.keys()

Object.keys(obj)==0
  • Object.keys()是一个静态方法,用于返回一个对象自身的所有可枚举属性的键名(不包括继承的属性和 Symbol 类型的键),以数组形式返回,对象为空的话数组就为0 ,此时就为true

问题:不能解决不可枚举属性

4.getOwnPropertyNames+getOwnPropertySymbols

Object.getOwnPropertyNames(obj)==0
Object.getOwnPropertySymbols(obj)==0
---------------------------------------
// 结合一下:
Object.getOwnPropertyNames(obj)==0 && Object.getOwnPropertySymbols(obj)==0 
  • Object.getOwnPropertyNames()是一个静态方法,用于返回一个对象自身的所有属性的键名(包括不可枚举属性,但不包括 Symbol 类型的键),以数组形式返回。 问题:不能返回symbol类
  • Object.getOwnPropertySymbols() 是一个静态方法,用于返回一个对象自身的所有 Symbol 类型属性的键(不包括继承的属性和字符串类型的键),以数组形式返回 问题:不能返回除了symbol类的
  • 可以二者结合使用来判断

5. 最终完美版:Reflect.ownKeys()

Reflect.ownKeys(obj)==0
  • Reflect.ownKeys() 是一个静态方法,可以用于返回一个对象自身的所有属性的键名,包括不可枚举属性和Symbol类型的键。

相关内容

热门资讯

我来教大家“友聚麻将辅助器ap... 我来教大家“友聚麻将辅助器app官方下载最新版本更新”详细分享开挂1、让任何用户在无需AI插件第三方...
我来教大家“连云港麻将辅助器a... 我来教大家“连云港麻将辅助器app官方下载最新版本更新”详细分享开挂一、连云港麻将AI软件牌型概率发...
我来教大家“TX舒兰棋牌辅助器... 我来教大家“TX舒兰棋牌辅助器app官方下载最新版本更新”详细分享开挂一、TX舒兰棋牌AI软件牌型概...
我来教大家“麻友圈2贵阳捉鸡麻... 亲,麻友圈2贵阳捉鸡麻将这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,麻友圈2贵...
我来教大家“朋友桂柳麻将辅助器... 您好,朋友桂柳麻将这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游戏...
我来教大家“六顺辅助器app官... 您好,六顺这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游戏中打牌都...
我来教大家“尊龙凯时辅助器ap... 我来教大家“尊龙凯时辅助器app官方下载最新版本更新”详细分享开挂1、让任何用户在无需AI插件第三方...
我来教大家“大宝连云港麻将辅助... 我来教大家“大宝连云港麻将辅助器app官方下载最新版本更新”详细分享开挂一、大宝连云港麻将AI软件牌...
我来教大家“AA Poker辅... 我来教大家“AA Poker辅助器app官方下载最新版本更新”详细分享开挂一、AA PokerAI软...
我来教大家“青海西宁麻将辅助器... 亲,青海西宁麻将这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,青海西宁麻将的开挂...
我来教大家“长城河北棋牌辅助器... 亲,长城河北棋牌这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,长城河北棋牌的开挂...
我来教大家“湘乐辅助器app官... 我来教大家“湘乐辅助器app官方下载最新版本更新”详细分享开挂一、湘乐AI软件牌型概率发牌机制”必胜...
我来教大家“众友麻将辅助器ap... 亲,众友麻将这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,众友麻将的开挂软件,名...
我来教大家“诸暨游戏辅助器ap... 我来教大家“诸暨游戏辅助器app官方下载最新版本更新”详细分享开挂一、诸暨游戏AI软件牌型概率发牌机...
我来教大家“决战麻将辅助器ap... 我来教大家“决战麻将辅助器app官方下载最新版本更新”详细分享开挂1、让任何用户在无需AI插件第三方...
我来教大家“五游联盟辅助器ap... 亲,五游联盟这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,五游联盟的开挂软件,名...
我来教大家“舒克贝塔辅助器ap... 亲,舒克贝塔这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,舒克贝塔的开挂软件,名...
我来教大家“部落先锋辅助器ap... 我来教大家“部落先锋辅助器app官方下载最新版本更新”详细分享开挂一、部落先锋AI软件牌型概率发牌机...
我来教大家“小闲54棋牌辅助器... 您好,小闲54棋牌这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游戏...
我来教大家“南通同道麻将辅助器... 我来教大家“南通同道麻将辅助器app官方下载最新版本更新”详细分享开挂一、南通同道麻将AI软件牌型概...