Javascript: 检查对象是否没有属性或者一个映射/关联数组是否为空
Javascript: 检查对象是否没有属性或者一个映射/关联数组是否为空
有没有一种简单的方法来检查一个对象是否没有属性,在JavaScript中?或者换句话说,检查一个映射/关联数组是否为空?例如,假设你有以下代码:
var nothingHere = {}; var somethingHere = {foo: "bar"};
有没有一种简单的方法来判断哪一个是“空”的呢?我能想到的唯一方法就是这样:
function isEmpty(map) { var empty = true; for(var key in map) { empty = false; break; } return empty; }
有没有更好的方法(比如原生属性/函数或其他方法)?
问题的出现原因是:需要判断一个对象是否没有属性,或者一个map/关联数组是否为空。在这种情况下,直接遍历对象的属性并判断是否有自有属性是一种解决方法。但是,如果存在扩展了Object原型的库,这种解决方法可能不够准确。
解决方法如下:
function isEmpty(map) { for(var key in map) { if (map.hasOwnProperty(key)) { return false; } } return true; }
这个解决方法是有效的,但是只有在没有扩展Object原型的库存在时才能正常工作。如果存在扩展了Object原型的库,使用hasOwnProperty方法来判断是否有自有属性是非常重要的。这个方法可以防止受到库的影响。感谢提供这个方法的人。
有人评论道,他之前一直使用hasOwnPrototype方法,并且已经习惯了这个方法的存在。这个评论引起了大家的笑声。
通过以上整理,我们可以得出解决这个问题的方法:遍历对象的属性,并使用hasOwnProperty方法来判断是否有自有属性。这样可以确保在存在扩展了Object原型的库时,仍然可以准确判断对象是否没有属性,或者map/关联数组是否为空。