{}就是一个空对象,由于没有任何属性和方法,所以可以利用这一特点进行区别:

1
2
3
4
5
6
7
8
function isEmpty (object) {
for (var i in object) {
// 存在属性或方法,则不是空对象
reutrn false;
}
return true;
}

代码测试如下:

1
2
isEmpty({}); // true
isEmpty(null); // true

JavaScript里有个坑,即null也是个Object呀!!
如下代码输出:

1
2
3
4
5
// 输出 object
console.log((typeof null));
// 输出 [object Null]
console.log(Object.prototype.toString.call(null));

所以要更加具体的区分出null undefined,稍加改进如下:

1
2
3
4
5
6
7
8
9
10
11
function isEmpty (object) {
if (object === null || object === undefined) {
return false;
}
for (var i in object) {
// 存在属性或方法,则不是空对象
reutrn false; // sodino.com
}
return true;
}

About Sodino