Как реализуется функция выборки элементов в DOM, с последующим кешированием?
По сути задача не сложная, создать объект для сохранения результатов и писать туда, но столкнулся с несколькими проблемами, на которые не нашел ответа самостоятельно.
Вариант 1:
function getDomElem(func) {
var cache = {};
// целевой объект поиска передаем в параметре
return function (target, selector) {
if (!(selector in cache)) {
cache[selector] = func.call(target, selector);
}
return cache[selector];
console.log(cache);
};
}
Использование:
// сделаем поиск на основе querySelector
var getElem = getDomElem(Document.prototype.querySelector);
var g = getElem(document, 'div');
// получим div как и задумано
var h = getElem(g, 'p');
// ошибка!!!! Uncaught TypeError: Illegal invocation
console.log(g, h)
Вариант 2:
function getDomElem(func) {
var cache = {};
return function (selector) {
if (!(selector in cache)) {
// хочу сделать объектом поиска текущий объект на котором была вызвана функция
cache[selector] = func.call(this, selector);
}
return cache[selector];
console.log(cache);
};
}
var getElem = getDomElem(Document.prototype.querySelector);
var g = document.getElem('div');
// ошибка!!! Uncaught TypeError: document.getElem is not a function
Всем доброго вечераВозникла проблема с owl carousel, при первой загрузке страницы width равен 0 и, естественно, слайдер не отображается
Возможно ли в JavaScript проверить, поддерживает ли браузер spread operator? Будет ли в этом браузере работать следующая конструкция?
Родительская страница и iframe лежат на одном доменеКаким образом можно установить в documentElement iframe MutationObserver?
Не найду в документации и в поиске такой сценарий работыКлиент отправляет одну или несколько команд в одном запросе, а сервер отвечает по мере...