文章目录
1. 将json对象转化为json字符串,再判断该字符串是否为"{}"
var data = {};
var b = (JSON.stringify(data) == "{}");
alert(b);//true
2. for…in 循环判断
var obj = {};
var b = function() {
for(var key in obj) {
return false
}
return true
}
alert(b());//true
3. es6针对对象增加了3个新方法(数组也有):
Object.keys
:返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历属性的键名Object.values
:返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历属性的键值Object.entries
:返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历属性的键值对
由此,我们可以通过其中任意一个方法,得到返回的数组,判断数组长度是否大于0,来判断对象是否为空
const obj = {
foo: 'bar',
baz: 42
}
console.log(Object.keys(obj));
// ["foo", "baz"]
console.log(Object.values(obj));
// ["bar", 42]
console.log(Object.entries(obj));
// [["foo", "bar"], ["baz", 42]]
// 打印返回值的长度
console.log(Object.keys(obj).length); // 2
const obj2 = {};
console.log(Object.keys(obj2)); // []
// 打印空对象的长度
console.log(Object.keys(obj2).length); // 0
4. in:属性名 in 对象(判断属性名是否在对象中存在,返回一个布尔值)
注意: 这个也可以用来判断当前对象是否为空,前提你要知道这个对象有值的时候必然存在这个属性名
const obj = {
foo: 'bar',
baz: 42
}
console.log('baz' in obj); // true
console.log('name' in obj); // false
5. hasOwnProperty:对象.hasOwnProperty(属性名)(判断对象中是否含有某个属性名,返回一个布尔值)
注意: 同上
const obj = {
foo: 'bar',
baz: 42
}
console.log(obj.hasOwnProperty('foo')) // true
console.log(obj.hasOwnProperty('name')) // false
6. jquery的isEmptyObject方法
此方法是jquery将2方法(for in)进行封装,使用时需要依赖jquery,如果有使用JQ的库的话可以使用该方法
var data = {};
var b = $.isEmptyObject(data);
alert(b);//true