【对象】判断是否是对象、判断空对象、判断是否有某个属性、判断两个对象是否相等

判断是否是对象:

function isObject(value) {
	const valueType = typeof value
	return value !== null && (valueType === 'object' || valueType === 'function')
}

判断对象是否是空对象:

  1. for...in 循环判断:
    var obj = {};
    var result = function() {
    	for(var key in obj) {
    		return false;
    	}
    	return true;
    }
    
  2. ES6 的 Object.keys() 方法:
    var data = {};
    var arr = Object.keys(data);
    alert(arr.length == 0);//true
    
  3. Object.getOwnPropertyNames() 方法:
    var data = {};
    var arr = Object.getOwnPropertyNames(data);
    alert(arr.length == 0);
    
  4. 将 json 对象转化为 json 字符串,再判断该字符串是否为 {}
    var data = {};
    var result = (JSON.stringify(data) == "{}");
    
  5. jQuery 的 isEmptyObject() 方法:
    var data = {};
    var result = $.isEmptyObject(data);
    

判断对象是否有某个属性:

  1. 使用 in 关键字,该方法可以判断对象的自有属性和继承来的属性是否存在。
    const obj = {name: 'Lee’}
    if ('name' in obj) {
    	return true
    }
    
  2. 使用对象的 hasOwnProperty() 方法,该方法只能判断自有属性是否存在,对于继承属性会返回 false。
    const obj = {name: 'Lee’}
    if (obj.hasOwnProperty('name')) {
    	return true
    }
    

判断两个对象是否相等:

  1. 把两个对象转成字符串进行对比,只适用于键值顺序都完全对应的对象。
    JSON.stringify(object1) === JSON.stringify(object2)
    
  2. Object.entries() 方法,只适用于键值顺序都完全对应的对象。
    Object.entries(object1).toString() === Object.entries(object2).toString()
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值