判断是否是对象:
function isObject(value) {
const valueType = typeof value
return value !== null && (valueType === 'object' || valueType === 'function')
}
判断对象是否是空对象:
for...in
循环判断:var obj = {};
var result = function() {
for(var key in obj) {
return false;
}
return true;
}
- ES6 的
Object.keys()
方法:var data = {};
var arr = Object.keys(data);
alert(arr.length == 0);//true
Object.getOwnPropertyNames()
方法:var data = {};
var arr = Object.getOwnPropertyNames(data);
alert(arr.length == 0);
- 将 json 对象转化为 json 字符串,再判断该字符串是否为
{}
:var data = {};
var result = (JSON.stringify(data) == "{}");
- jQuery 的
isEmptyObject()
方法:var data = {};
var result = $.isEmptyObject(data);
判断对象是否有某个属性:
- 使用 in 关键字,该方法可以判断对象的自有属性和继承来的属性是否存在。
const obj = {name: 'Lee’}
if ('name' in obj) {
return true
}
- 使用对象的
hasOwnProperty()
方法,该方法只能判断自有属性是否存在,对于继承属性会返回 false。const obj = {name: 'Lee’}
if (obj.hasOwnProperty('name')) {
return true
}
判断两个对象是否相等:
- 把两个对象转成字符串进行对比,只适用于键值顺序都完全对应的对象。
JSON.stringify(object1) === JSON.stringify(object2)
Object.entries()
方法,只适用于键值顺序都完全对应的对象。Object.entries(object1).toString() === Object.entries(object2).toString()