在JavaScript中的python hasattr?

时间:2010-10-16 01:19:43

标签: javascript

在javascript中:

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

我希望能够区分d.oned.three。默认情况下,它们都评估为false,但在我的情况下,它们不应该被视为相同。

3 个答案:

答案 0 :(得分:22)

你可以做到

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

d.hasOwnProperty("one")

您可能需要hasOwnProperty,因为如果属性位于原型链中的对象上,in运算符也将返回true。例如

"toString" in d // -> true

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

答案 1 :(得分:0)

这些值并非严格错误:

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

另外,请参阅olliej和Ken的评论。

答案 2 :(得分:-1)

好吧,d.onefalsed.threeundefined

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确实有时会有一些时髦的错误评估,但这不是其中一种情况:

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

To check for undefined you can use typeof

if (typeof something  == "undefined") 

或者,您可以检查threed

的属性
if (d.hasOwnProperty("three"));