我有一个带有以下标记的对象:
Object {workout: Object}
workout: Object
1/12/2015: Array[3]
0: "workoutTitle0"
1: "workoutTitle1"
2: "workoutTitle2"
2/12/2015: Array[3]
3/12/2015: Array[3]
4/12/2015: Array[3]
5/12/2015: Array[3]
6/12/2015: Array[3]
7/12/2015: Array[3]
我想检查一下10/12/2015字段是否存在 - 如果存在我想加载该字段所持有的数组,如果没有为该字段创建新的空数组。
我尝试了这段代码,但每次都会出错,即使字段不存在:
function isEmpty(obj) {
var prop = '10/12/2015'
for( prop in obj) {
if(obj.hasOwnProperty(prop))
return false;
}
return true;
}
这里如果JSFiddle:
答案 0 :(得分:2)
我想检查一下10/12/2015字段是否存在
你工作太辛苦,只是:
if (obj.hasOwnProperty('10/12/2015')) {
// It exists in the object itself
}
...对于“自己的”属性,或
if ('10/12/2015' in obj) {
// It exists in the object or one of its prototypes
}
...对于属于或的属性,它继承自原型。
我尝试了这段代码,但每次都会出错,即使字段不存在:
function isEmpty(obj) { var prop = '10/12/2015' for( prop in obj) { if(obj.hasOwnProperty(prop)) return false; } return true; }
您
var prop = '10/12/2015';
行声明prop
变量,并为其指定值'10 / 12/2015';但是你立即用以下内容覆盖该值:
for( prop in obj) {
for-in
循环首先要做的是覆盖prop
的值。
你的循环真正在做的是检查对象是否有任何“自己的”属性(如果是,它返回false
)或只有它继承自其原型的属性(如果是这样,它返回'true')。