var data = {
foo: "I'm a string literal",
bar: {
content: "I'm within an object"
}
};
JQuery
$.each(data, function(i, element){
if($.isPlainObject(element){
// we got an object here
}
});
В jQuery lib есть похожие методы, такие как $.isArray()
или $.isFunction()
.
Собственный Javascript
for(var element in data){
if(toString.call(element) === '[object Object]'){
// we got an object here
}
}
Использование пути hack'ish
с toString
имеет то преимущество, что вы можете определить, является ли он really
объектом и array
. И объекты, и массивы вернут object
, используя typeof element
.
Короче говоря, вы не можете полагаться на оператор typeof
для различения истинных objects
и arrays
. Для этого вам нужно toString.call()
. Если вам просто нужно знать, является ли это какой-либо объект или нет, typeof
просто отлично.