如果我设置这样的变量:
var a = {};
检查是否有任何内容
var b = { x: 1 }
检查是否有任何内容
var c = { y: null }
我认为测试(a)不起作用,因为它不是空的。那么如果我事先不知道内容是什么,我如何检查它是否有一些内容?在这种情况下,我希望变量b
和c
显示为包含内容。
答案 0 :(得分:1)
function isEmpty(input)
{
var result = true;
for(item in input)
result = false;
return result;
}
答案 1 :(得分:1)
有点罗嗦,但这应该有效:
var hasProperties = false;
for(var prop in obj) {
hasProperties = true;
break;
}
答案 2 :(得分:0)
以下是jQuery所做的一段代码:
// ...
isEmptyObject: function( obj ) {
var name;
for ( name in obj ) {
return false;
}
return true;
},
// ...
答案 3 :(得分:0)
尝试if(Object.keys(a).length)
。
答案 4 :(得分:0)
很多答案,但我想您要检查对象的自己的属性:
for (var p in obj) {
if (obj.hasOwnProperty(p)) {
// obj has at least one enumerable own property
}
}
但请注意,在ES5中,可以使用不可枚举的自有属性构造对象:
function hasEnumerableOwnProperties(obj) {
for (var p in obj) {
if (obj.hasOwnProperty(p)) return true;
}
return false;
}
var obj = {}
Object.defineProperty(obj, 'foo', {enumerable:false, value:'foo'})
console.log(hasEnumerableOwnProperties(obj) + ':' + obj.foo); // false:foo
Javascript的设计并不适合这种分析,如果你专注于特定的属性,功能或属性(即使用特征检测),它会好得多。
不要试图根据简单(通常是不确定的)测试推断一些一般行为(鸭子打字)。