JS判断空对象的几个方法大盘点_第1页
JS判断空对象的几个方法大盘点_第2页
JS判断空对象的几个方法大盘点_第3页
JS判断空对象的几个方法大盘点_第4页
JS判断空对象的几个方法大盘点_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第JS判断空对象的几个方法大盘点目录知识准备Object.keysObject.getOwnPropertyNames可枚举属性hasOwnProperty盘点判空方法JSON.stringify判空forin判空Object.getOwnPropertyNames判空Object.keys()判空hasOwnProperty判空附将对象转换为字符串进行比较总结

知识准备

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

Object.keys

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

varobj={

name:"cxy",

age:"19"

varobjArray=Object.getOwnPropertyNames(obj);

console.log(objArray)

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

Object.getOwnPropertyNames

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

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

可枚举属性

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

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

varstuObj={

name:"cxy"

Object.defineProperty(stuObj,'age',{

value:"18",

enumerable:false

console.log(Object.keys(stuObj))

console.log(Object.getOwnPropertyNames(stuObj))

hasOwnProperty

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

varstuObj={

name:"cxy"

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

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

盘点判空方法

JSON.stringify判空

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

letobj={

name:"cxy"

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

forin判空

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

letforNull=(items)={

for(letiteminitems){

returnfalse

returntrue

}

Object.getOwnPropertyNames判空

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

letstuArray=Object.getOwnPropertyNames(obj)

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

Object.keys()判空

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

letstuArray=Object.getOwnPropertyNames(obj)

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

hasOwnProperty判空

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

letforNull=(items)={

for(letiteminitems){

if(items.hasOwnProperty(item)){

returnfalse

returntrue

}

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

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

vara={};

varb=n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论