ECMAScript defines a method hasOwnPropertyfor checking whether an object has a property of a given name:
var foo = {'bar':'bar'}
alert( foo.hasOwnProperty( 'bar' ) );
alert( foo.hasOwnProperty( 'baz' ) );
EDIT: This does not fully answer your question.
It is possible that the property was set as undefined
foo.bar = undefined;
alert( foo.hasOwnProperty( 'bar' ) ); //still true
An important question: what is your truth table for?
In php:
type | isset() | == true
------+---------+----------
null | false | false
false | true | false
true | true | true
"" | true | false
"a" | true | true
0 | true | false
1 | true | true
In JS:
type | isset() | truthy
----------+---------+--------
NaN | ? | false
undefined | ? | false
null | false | false
true | true | true
false | true | false
"" | true | false
"a" | true | true
0 | true | false
1 | true | true
source
share