Скажем, я хотел бы проверить, является ли свойство объекта Foo определяется или нет, я хотел бы использовать в этом случае:Javascript TypeOf неопределенных объектов Подствойство
typeof Foo.property != 'undefined'
Но если не только свойство не существует, но и объект не определен, это приводит к ошибке.
Есть ли одна линия способ проверить, если свойство объекта определяется и возвращает ложь в следующих случаях:
- если свойство объекта не определен
- , если объект не является определены
ПОЧЕМУ Я ХОЧУ ЭТО: Я пишу сценарий в NodeJS, который использует класс, который будет использоваться в передней ванной d также, и вместо того, чтобы поддерживать два разных файла, которые в конечном итоге будут в основном одинаковыми, за исключением незначительных изменений для двух сред, я хотел бы провести различие между средами с некоторой базовой логикой ИФ.
ДРУГИЕ ВОЗМОЖНЫЕ ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ: Допустим, мы имеем следующий объект:
function Foo() {
this.case1={
info1: 'something',
info2: 'something',
.....
info1000: 'something'
}
this.case2={
info1: 'something',
info2: 'something',
......
info1000: 'something'
}
}
Если я хотел бы решить, какой случай относится ко мне, и решение лежит в одной из внутренней Информация х, я сначала нужно проверить, если соответствующий случай существует, а затем, если соответствующая информация существует (2 условия):
if (typeof Foo.case1 != 'undefined') && (typeof Foo.case1.info1 != 'undefined')
Если это гораздо глубже вложенный объект, там будет много проверки состояния и ввода, получить базовый i nformation: если case1 вообще не существует, я буду использовать case2.
Небольшой наконечник для переносимости; нейтральный для окружающей среды способ найти «глобальный» объект - запустить IIFE без аргументов вызова, а 'this' будет глобальным внутри. – Katana314
К сожалению, я не знаю, что такое IIFE, но если вы хотите либо изменить мой ответ, либо добавить новый ответ, используя этот метод, я бы поднял/принял его :) –
Немедленно вызывается выражение функции. Итак, вот так: 'var global; (function() {global = this;})(); ' – Katana314