Python hasattr в javascript?

в javascript:

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

Я хочу иметь возможность различать d.one и d.three. По умолчанию они оба оцениваются как false, но в моем случае они не должны рассматриваться одинаково.

Ответы

Ответ 1

Вы можете сделать

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

или

d.hasOwnProperty("one")

Вероятно, вы хотите hasOwnProperty, поскольку оператор in также вернет true, если свойство находится в объекте в цепочке прототипов. например.

"toString" in d // -> true

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

Ответ 2

Значения не являются строгими:

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 ниже.

Ответ 3

Ну, d.one - false, а d.three - undefined.

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

Попробуйте это с помощью jsFiddle

Javascript иногда имеет фальшивую истинную ложную оценку, но это не одна из таких ситуаций:

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

Чтобы проверить undefined, вы можете использовать typeof

if (typeof something  == "undefined") 

Или вы можете проверить, является ли three свойством d

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