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"));