从节点REPL开始,
> d = {}
{}
> d === {}
false
> d == {}
false
给定我有一个空字典,如何确保它是空字典?
Answers:
您可以Object.prototype
使用此isEmpty
方法进行扩展,以检查对象是否没有自己的属性:
Object.prototype.isEmpty = function() {
for (var prop in this) if (this.hasOwnProperty(prop)) return false;
return true;
};
Object.prototype.isEmpty: this= undefined
,所以不起作用,如何解决这个问题?
由于没有属性,因此for
循环不会有任何迭代。为了给您应得的信誉,我在这里找到了这个建议。
function isEmpty(ob){
for(var i in ob){ return false;}
return true;
}
isEmpty({a:1}) // false
isEmpty({}) // true
obj.hasOwnProperty(i)
在返回false之前进行检查。这将滤除通过原型链继承的属性。
这就是jQuery所使用的,效果很好。尽管这确实需要jQuery脚本使用isEmptyObject。
isEmptyObject: function( obj ) {
for ( var name in obj ) {
return false;
}
return true;
}
//Example
var temp = {};
$.isEmptyObject(temp); // returns True
temp ['a'] = 'some data';
$.isEmptyObject(temp); // returns False
如果不包括jQuery,则只需创建一个单独的纯javascript函数。
function isEmptyObject( obj ) {
for ( var name in obj ) {
return false;
}
return true;
}
//Example
var temp = {};
isEmptyObject(temp); // returns True
temp ['b'] = 'some data';
isEmptyObject(temp); // returns False
我距离JavaScript学者还很远,但是以下工作有效吗?
if (Object.getOwnPropertyNames(d).length == 0) {
// object is empty
}
它的优点是可以作为一行纯函数调用。
check.emptyObject(d)
。