No it doesn't. It will return as undefined, which evaluates to false when compared to 1 using either triple- or double-equals.
And why call hasOwnProperty here? I'm pretty sure I want to know the age of any properties inherited into my object from a superclass.
At worst, I will grant you an undefined/null check:
var val = null;
for(var k in obj){
if(obj[k] && obj[k].age === 1){
val = obj[k];
break;
}
}
This works with both objects and arrays.