Показать сообщение отдельно
  #31 (permalink)  
Старый 25.11.2014, 10:02
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от kostyanet
А вот писать везде if(typeof some_var === 'undefined') меня уже подзаебало. JS же в упор не хочет отвечать за вложение больше 1 глубиной. На php if(isset(arr['one']['two']['three']['four']))... на js - х нанэ. Или как-то делается?
кто то мешает написать подобие isset?

простейший вариант:
function isset(object, keys) {
  keys = (keys instanceof Array ? keys : [keys]).slice(0);
  return object !== void 0 && keys[0] in object
    ? keys.length === 1 || isset(object[keys[0]], keys.slice(1)) : false;
}

var o = {
  a: {
    w: {
      r: {
        t: {
          y: 1
        }
      }
    }
  }
};

alert(isset(o, 'a')); // true
alert(isset(o, 'w')); // false
alert(isset(o, ['a', 'w', 'r', 't', 'y'])); // true
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием