For-in с объектом window

171
05 марта 2018, 02:04

Есть массив объектов в глобальном пространстве имён. Требуется получить массив имён этих объектов, которые имеют определённое свойство. Делаю так:

var test = {
    pr: true
}
alert(getObjName('pr'))
function getObjName(key) {
    var arr = [];
    for (var obj in window) {
        if (window[obj][key]) arr.push(obj)
    }
    return arr
}

Пробовал вместо window[obj][key] window[obj].hasOwnProperty(key) результат тот же. Если вместо arr.push(obj) поставить alert(obj), то искомый объект отобразится. Если же убрать key из window[obj][key] , то мы получим массив свойств window.

Answer 1

Код рабочий, за исключением того, что нет проверки на существование самого window[obj]. Так как в window довольно много служебных свойств некоторые из них могут иметь значение null и при попытке взять у null свойство будет соответствующая ошибка.

Для решения достаточно исправить условие следующим образом:

window[obj] && window[obj][key]
READ ALSO
input type range c кастомным выводом цифр

input type range c кастомным выводом цифр

Здравствуйте, подскажите пожалуйста какие варианты возможны для реализации такой задачи? Есть ползунок (input type range) он управляет каруселью...

202
Замыкание в JS. Объясните 2 момента

Замыкание в JS. Объясните 2 момента

Здравствуйте! Разбираю тему замыкания в JS и не могу понять двух моментов в коде с MDN по темеОбъясните пожалуйста (вопросы после кода)

186
Как скопировать value ключа из localstorage в значение textarea?

Как скопировать value ключа из localstorage в значение textarea?

Как скопировать value ключа из localstorage в значение textarea? Чтобы потом использовать их при отправке формы

212
Отправка формы без кнопки submit

Отправка формы без кнопки submit

Добрый день, возникла такая проблемаЯ хочу при выборе файла (input type="file") Чтобы форма сабмитилась

241