Есть ли способ различать свойство unset и свойство, установленное в undefined?
Скажем, у меня есть объект testObject = {a: undefined}
. Если я тогда console.log(testObject.a)
, я получаю undefined. Но то же самое происходит, если я console.log(testObject.b)
, которого не существует. Есть ли способ в JavaScript различать a
и b
здесь? Я прошу в основном из любопытства, я не имею никакого смысла.
Ответы
Ответ 1
hasOwnProperty()
метод возвращает логическое значение, указывающее, имеет ли объект указанное свойство как собственное (не наследуемое) свойство.
В данном случае -
testObject = {a: undefined};
testObject.hasOwnProperty('a') //true
testObject.hasOwnProperty('b') //false
Ответ 2
Фактически вы можете отличить дополнительное условие перед проверкой с помощью оператора in
if(a in testObject) {
//yes .. now check whether it is undefined or not
}
Ответ 3
testObject.hasOwnProperty('a')
Обратите внимание, что это будет работать только для таких объектов, как вы показываете; унаследованные свойства от прототипа не пройдут этот тест (который является точкой hasOwnProperty
).