判断一个对象是否为空

由判断一个对象是否有属性(即{}),引发的一系列思考:
1. 首先要想判断一个对象是否为null,很简单,使用if(obj)或者obj==null 直接判断即可。
2. 判断一个对象是否有任何属性:
方法一:使用for in 判断,是否含有属性。(好方法)

JavaScript判断object/json 是否为空,可以使用jQuery的isEmptyObject()方法。

function isEmptyObject(e) {  
    var t;  
    for (t in e)  
        return !1;  
    return !0;
}  
console.log($.isEmptyObject({"re": 2}));    //false  
console.log(isEmptyObject());           //true  
console.log(isEmptyObject({}));         //true  
console.log(isEmptyObject(null));       //true  
console.log(isEmptyObject(23));         //true  
console.log(isEmptyObject({"te": 2}));      //false  

和喵大婶探讨,得到方法二:对象使用JSON.stringify转为字符串,判断长度是否大于2

var obj = {
        'name': 'xiaowei',
        'heihei': '12',
        'haha': 'girl'
    };
    var myobj = {};
    var nullobj = null;

    //自创方法
    function isEmptyProperty(obj) {
        if (typeof obj === 'object' && obj) {
            if (JSON.stringify(obj).length > 2) {
                return !1;
            }
        }
        return !0;
    }
    console.log(isEmptyProperty(23)); //true
    console.log(isEmptyProperty(obj)); //false
    console.log(isEmptyProperty(myobj)); //true
    console.log(isEmptyProperty(nullobj)); //true

数组的toString方法是把数组转为字符串形式,对象的toString方法是转为类型,因为Object.prototype.toString.call(obj).slice(8,-1); 是输出类型。

那把伪数组转为数组,再判断length,是不是可以呢。他是有条件的:

伪数组转为真正数组的条件:
1.伪数组的键值需要为数字(对应数组的下标),否则转换后数组均无初始值
2.有length属性

例:
不含有length:

 var obj = {
            0:"abc",
            1:"def",
            2:"hig"
        }
        var arr = [].slice.call(obj);
        console.log(arr); //[]

属性值不为数字,肯定不能转为数组,无法对应下标,结果也为[].

正确使用:

var obj = {
      0:"abc",
      1:"def",
      2:"hig",
      length:3
  }

 var arr = [].slice.call(obj);
 console.log(arr);
 //输出结果:
 (3) ["abc", "def", "hig"]
0:"abc"
1:"def"
2:"hig"
length:3
__proto__:Array(0)

注意:要是属性数字大小和length不匹配,以length为准,没有定义的下标对应的数组值为undefined。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值