开发者

python's hasattr in javascript?

in javascript:

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

I want to be开发者_StackOverflow社区 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 + "\nthree: " + 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"));
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜