主页 > 前端 > javascript >
来源:未知 时间:2021-07-13 09:56 作者:小飞侠 阅读:次
[导读] javascript中如何判断空对象 js 判断空对象 首先要区分一个概念,空对象和空引用: 空对象:{}是指不含任何属性的对象,当然对象属性包括字面值和函数。空引用:obj=null是指变量值...
javascript中如何判断空对象 js 判断空对象首先要区分一个概念,空对象和空引用: 空对象:{}是指不含任何属性的对象,当然对象属性包括字面值和函数。 空引用:obj=null 是指变量值指向null变量,当然在js默认不赋值的情况下,一个变量为undefined. 空对象的讨论: 原型: 原型上包括了继承属性,有可以枚举的属性和不可以枚举的属性。默认对象都继承了Object。 自身: 自身属性同样包括了可枚举的属性和不可枚举的属性。 限定场景: 后台JSON对象: 判断后台传来的对象为空对象,此时,该对象一般为JSON对象,此时可以忽略原型上的属性判断,因为JSON对象也是一个普通对象,不过它的结构有时候比较特殊,该对象默认基础Objcet,然而,作为一个从后台传来的对象,后台无法实现原型继承、不可枚举这种特性,这个时候,只需要关注对象自身可枚举属性时是否为空即可。 解决方案: 方案 1: var data = {}; var b = JSON.stringify(data) == "{}"; alert(b); //true 方案 2: Object.keys(obj)返回不包括原型上的可枚举属性,即自身的可枚举属性 var data = {}; var b = Object.keys(data).length === 0; 方案 2 模拟实现: for in语法遍历原型及自身上的可枚举属性,需要结合hasOwnProperty去除原型上的可枚举属性 var data = {}; function isEmptyObj(obj) { for (var key in obj) { if ({}.hasOwnProperty.call(obj, key)) return false; } return true; } var b=isEmptyObj(data); console.log(b); 方案 3: Objcet.getOwnPropertyNames(obj)返回不包括原型上的所有自身属性(包括不可枚举的属性) var data = {}; var b=Object.getOwnPropertyNames(data)===0; console.log(b); |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com