在JavaScript中的python hasattr?

in javascript:

d={one: false, two: true}
d.one
d.two
d.three

I want to be able to differentiate between d.one and d.three. By default they both evaluate to false, but in my case they should not be treated the same.

You can do

"one" in d // or "two", etc

or

d.hasOwnProperty("one")

You probably want hasOwnProperty as the in operator will also return true if the property is on the an object in the prototype chain. eg.

"toString" in d // -> true

d.hasOwnProperty("toString") // -> false

The values aren't strictly false:

js> d={one: false, two: true}
[object Object]
js> d.one == false
true
js> d.three == false
false
js> d.three === false
false    
js> d.three === undefined
true
js> 'three' in d
false
js> 'one' in d
true

Also, see comments by olliej and Ken below.

Well, d.one is false and d.three is undefined.

var d={one: false, two: true};
alert("one: " + d.one + "
three: " + d.three);
  // Output:
  // one: false
  // three: undefined

Try it out with this jsFiddle

Javascript does have some funky true false evaluation at times, but this isn't one of those situations:

alert(d.three == false);                                          // alerts false

To check for undefined you can use typeof

if (typeof something  == "undefined") 

Or you can check if three is a property of d

if (d.hasOwnProperty("three"));