Функция-прототип Javascript, которая запоминает последнее значение для отложенной загрузки

0

В настоящее время я разрабатываю webapp, где мне приходится беспокоиться о потенциально больших массивах. Эти массивы содержат несколько идентификаторов, которые будут добавлены в html-списки. Поэтому, учитывая массив из 170 идентификаторов, я получаю ul, который содержит 170 li-элементов. Поскольку мне не нужно беспокоиться о поиске, но я решил использовать ленивую загрузку. Пока я загружаю большой массив один раз, и теперь я пишу функцию, которая добавляет новый элемент в соответствии с позицией пользователей.

Эта функция должна помнить свою последнюю позицию, если она не получит конкретный новый номер (второй параметр установлен). Я попытался реализовать это с помощью атрибута функции. Вот что я до сих пор (ids является массивом, pos позиция, которая может быть установлена):

Player.prototype.showPlaylist = function (ids, pos) {
    //In case pos isn't set, use your old value
    showPlaylist.pos = pos !== "undefined" ? showPlaylist.pos : showPlaylist.pos;
    console.log(showPlaylist.pos);
    for (var i = showPlaylist.pos; i < ids.length; i++) {
        //create new html elements
    }
}

К сожалению, я получаю

showPlaylist не определен

на консоли.log(). Это первый раз, когда я работаю как с ленивой загрузкой, так и с функцией, имеющей память, поэтому может быть лучшее решение (я действительно хочу избежать глобальных переменных).

  • 2
    Ваша логика не имеет смысла, поэтому, если pos определен, showPlaylist.pos равно showPlaylist.pos иначе showPlaylist.pos равно showPlaylist.pos ?
  • 1
    Кроме того, вам нужно ссылаться на this.pos (или Player.prototype.showPlaylist.pos ) вместо showPlaylist.pos .
Показать ещё 2 комментария
Теги:
performance
prototype

2 ответа

2
Player.prototype.showPlaylist = function (ids, pos) {
    //In case pos isn't set, use your old value
    this.pos = pos !== "undefined" ? this.pos : pos;
    console.log(this.pos);
    for (var i = 0; i < this.pos.length; i++) {
        //create new html elements
    }
}

Используйте это ключевое слово для хранения позиции, потому что ее конкретный объект.

даже если вы хотите присоединить pos к функции showPlayList, тогда также понятие showPlaylist.pos неверно, потому что нужно приложить к этому Player.prototype.showPlaylist.pos.

1

В вашем коде может быть несколько неправильных вещей, сначала член pos на this как уже упоминалось. Значение this может быть не списком воспроизведения.

Более подробную информацию о прототипе и значении этого можно найти здесь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню