假设我宣布
var ad = {};
如何检查该对象是否包含用户定义的属性?
假设我宣布
var ad = {};
如何检查该对象是否包含用户定义的属性?
当前回答
使用jQuery,你可以使用:
$.isEmptyObject(obj); // Returns: Boolean
从jQuery 1.4开始,这个方法既检查对象本身的属性,也检查从原型继承的属性(因为它不使用hasOwnProperty)。
随着ECMAScript第五版在现代浏览器(IE9+, FF4+, Chrome5+, Opera12+, Safari5+),你可以使用内置的对象。键的方法:
var obj = { blah: 1 };
var isEmpty = !Object.keys(obj).length;
或者简单的JavaScript:
var isEmpty = function(obj) {
for(var p in obj){
return false;
}
return true;
};
其他回答
你可以使用以下方法:
两声巨响!!属性查询
var a = !![]; // true
var a = !!null; // false
hasOwnProperty 这是我曾经用过的东西:
var myObject = {
name: 'John',
address: null
};
if (myObject.hasOwnProperty('address')) { // true
// do something if it exists.
}
然而,JavaScript决定不保护方法的名称,因此它可能被篡改。
var myObject = {
hasOwnProperty: 'I will populate it myself!'
};
myObject中的道具
var myObject = {
name: 'John',
address: null,
developer: false
};
'developer' in myObject; // true, remember it's looking for exists, not value.
typeof
if (typeof myObject.name !== 'undefined') {
// do something
}
但是,它不检查null。
我认为这是最好的办法。
在运营商
var myObject = {
name: 'John',
address: null
};
if('name' in myObject) {
console.log("Name exists in myObject");
}else{
console.log("Name does not exist in myObject");
}
结果:
Name存在于myObject中
下面是一个关于in操作符的更详细的链接:确定一个对象属性是否存在
大多数最近的浏览器(和node.js)都支持object .keys(),它会返回一个数组,其中包含对象文字中的所有键,因此您可以执行以下操作:
var ad = {};
Object.keys(ad).length;//this will be 0 in this case
浏览器支持:Firefox 4, Chrome 5, Internet Explorer 9, Opera 12, Safari 5
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
如果你使用的是underscore.js,那么你可以使用_。isEmpty功能:
var obj = {};
var emptyObject = _.isEmpty(obj);
var hasAnyProps = false; for (var key in obj) { hasAnyProps = true; break; }
// as of this line hasAnyProps will show Boolean whether or not any iterable props exist
简单,适用于每个浏览器,即使它在技术上是对对象上的所有键的循环,它也不会循环遍历所有键…要么有0,循环不运行,要么有一些,循环在第一个之后中断(因为我们只检查是否有ANY…那为什么还要继续呢?)
使用jQuery,你可以使用:
$.isEmptyObject(obj); // Returns: Boolean
从jQuery 1.4开始,这个方法既检查对象本身的属性,也检查从原型继承的属性(因为它不使用hasOwnProperty)。
随着ECMAScript第五版在现代浏览器(IE9+, FF4+, Chrome5+, Opera12+, Safari5+),你可以使用内置的对象。键的方法:
var obj = { blah: 1 };
var isEmpty = !Object.keys(obj).length;
或者简单的JavaScript:
var isEmpty = function(obj) {
for(var p in obj){
return false;
}
return true;
};