В настоящее время я разрабатываю 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(). Это первый раз, когда я работаю как с ленивой загрузкой, так и с функцией, имеющей память, поэтому может быть лучшее решение (я действительно хочу избежать глобальных переменных).
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.
В вашем коде может быть несколько неправильных вещей, сначала член pos на this
как уже упоминалось. Значение this
может быть не списком воспроизведения.
Более подробную информацию о прототипе и значении этого можно найти здесь.
pos
определен,showPlaylist.pos
равноshowPlaylist.pos
иначеshowPlaylist.pos
равноshowPlaylist.pos
?this.pos
(илиPlayer.prototype.showPlaylist.pos
) вместоshowPlaylist.pos
.