加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

JS判断空对象有什么方式 用到哪些知识点

发布时间:2023-09-21 12:38:22 所属栏目:语言 来源:
导读:在这篇文章中,我们来学习一下“JS判断空对象有什么方法,用到哪些知识点”的相关知识,下文有详细的讲解,易于大家学习和理解,有需要的朋友可以借鉴参考,下面就请大家跟着小编的思路一起来学习一下吧。

在这篇文章中,我们来学习一下“JS判断空对象有什么方法,用到哪些知识点”的相关知识,下文有详细的讲解,易于大家学习和理解,有需要的朋友可以借鉴参考,下面就请大家跟着小编的思路一起来学习一下吧。

在盘点JS判空方法之前我们先来了解下面的三个方法。

Object.keys

Object.keys()方法是以对象为参数,返回一个包含该对象内所匹配的属性和方法的数组

var obj = {

name: "cxy",

age: "19"

};

var objArray = Object.getOwnPropertyNames(obj);

console.log(objArray)

可以看到objArray为返回值,且返回值为以对象内的属性为内容的数组

Object.getOwnPropertyNames

Object.getOwnPropertyNames()方法同样是也是以对象为参数,返回一个包含该对象内所匹配的属性和方法的数组

大家在这里会发出疑问,这两个有啥区别?Object.getOwnPropertyNames()可以返回所有的属性,而Object.keys()只能返回可枚举属性,诶?到这里大家又疑惑了可枚举属性又是个啥?不要着急,我来解释一下什么叫可枚举属性

可枚举属性

可枚举或者不可枚举属性是对象内部通过可枚举标志enumerable来进行区分的,在默认情况下,我们obj.name = "cxy"为对象新增了一个属性后,其可枚举标志enumerable为ture,而当其值为false的时候它是不可枚举的,当我们对对象进行for,Object.keys(),JSON.stringify()的时候不可枚举属性是找不出来的,我们可以理解为不可枚举属性是隐身的

现在我们拿上面的Object.getOwnPropertyNames和Object.keys()进行实战举例,我们通过defineProperty来为对象添加age属性,因为该方法可以设置枚举标志,这里设置为false,可以看到下面两个不同的返回结果

var stuObj = {

name: "cxy"

}

Object.defineProperty(stuObj, 'age', {

value: "18",

enumerable: false

});

console.log(Object.keys(stuObj))

console.log(Object.getOwnPropertyNames(stuObj))

hasOwnProperty

hasOwnProperty()是用来判断某对象是否含有某属性的,其参数为属性名

var stuObj = {

name: "cxy"

}

console.log(stuObj.hasOwnProperty('name'))

但是这里要注意一个问题就是,hasOwnProperty()判断继承属性的时候会返回false,继承属性即对象从原型对象上继承的属性,比如说toString

盘点判空方法

JSON.stringify判空

这种方式是比较简单的了,使用JSON.stringify将对象转换为字符串,再通过等于判断即可得到对象是否为空的布尔值

let obj = {

name: "cxy"

}

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

for in判空

使用for in的话可以当触发循环的时候返回false没有触发循环的时候代表对象为空返回ture

let forNull = (items) => {

for (let item in items) {

return false

}

return true

}

Object.getOwnPropertyNames判空

这里使用了上文提及的Object.getOwnPropertyNames,将返回的数组的length作为判断依据。

let stuArray = Object.getOwnPropertyNames(obj)

console.log(stuArray.length === 0)

Object.keys()判空

和上个方法一样,使用数组作为判断依据

let stuArray = Object.getOwnPropertyNames(obj)

console.log(stuArray.length === 0)

hasOwnProperty判空

使用hasOwnProperty是使用for循环将元素进行判断如果含有则返回false说明不为空,反之则为空

let forNull = (items) => {

for (let item in items) {

if(items.hasOwnProperty(item)){

return false

}

}

return true

}

附将对象转换为字符串进行比较

这种方法很不推荐,但也确实是最容易想到的,主要使用JSON.stringify()这个方法对对象进行强转,贴出来仅供一看: 

var a={};

var b=new Object();

console.log("对象字面量的比较结果:"+(JSON.stringify(a)=="{}"))

console.log("构造函数的比较结果:"+(JSON.stringify(b)=="{}"))

现在大家对于JS判断空对象有什么方法,用到哪些知识点的内容应该都有一定的认识了吧,希望这篇能对大家有所帮助。

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章