Мне кажется, что существует четыре разных способа определить, имеет ли данный объект (например, foo
) заданное свойство (например, bar
):
-
if (foo.hasOwnProperty(bar)) {
-
if ('bar' in foo) {
-
if (typeof foo.bar !== 'undefined') {
-
if (foo.bar === undefined) {
Чтобы определить, есть ли в объекте foo
свойство с именем "bar
", все три эти выражения эквивалентны? Есть ли какая-либо субъектная семантика, которую я не знаю, что делает любое из этих трех утверждений разными?