Я видел много сообщений об использовании оператора in
в Javascript, чтобы проверить, существует ли поле в объекте или в цепочке прототипов объекта, но я не видел ни одного, чтобы перейти вниз другим способом.
Допустим, у меня есть объект:
var obj = {
myField
}
И myField
установлен для другого объекта с различными полями на нем:
obj.myField = {
mySetting: true
}
Если я хочу сослаться на mySetting
, скажем, в операторе if, я должен сделать что-то вроде этого:
if (obj.myField && obj.myField.mySetting && obj.myField.mySetting === true)
Если я использую in
, это все равно неуклюже:
if ("myField" in obj && "mySetting" in obj.myField && obj.myField.mySetting === true)
Следующее возвращает false:
if ("mySetting" in obj)
Имеется ли какой-то синтаксис, о котором я не знаю, который может позволить мне написать здесь приличное выражение if
, возвращая false, если его не существует, или исключая его, по крайней мере, не выбрасывая исключение. Я использую jQuery, так что решение с этим было бы хорошо.