Цели
Проверьте и запишите единственную последнюю итерацию.
Объяснение
У меня есть класс с именем Terminal
, который получает object
в качестве параметра и сохраняетв локальный массив с именем cache
.
Для упрощения я разместил только 1 экземпляр в качестве примера с классом Terminal
. Я хочу, чтобы вы помнили, что за сценой больше экземпляров каждого класса. (Слайдер, Галерея и т. Д.)
Это код:
// button.js
import Terminal from './widget.mjs';
class Button {
constructor(type, color, bus) {
this.type = document.querySelector(type);
this.color = color;
/* #1 Pass the parameters by using this keyword */
this.bus = Terminal.init(this);
}
}
let userButton = new Button('.button', 'blue');
// Terminal.js
export default class Terminal {
static init(obj) {
/* #2 Define Variable */
this.obj= obj;
/* #3 Singleton */
if (!Terminal.ins) {
Terminal.ins = new Terminal(this.obj);
}
/* #4 Define the cache (Originally from Terminal.ins) */
this.cache = Terminal.ins.cache;
/* #5 Push the parameter & Log it */
this.cache.push(this.obj);
console.log(this.cache);
}
constructor(data) {
/* #3-1 Define an array */
this.cache = [];
}
}
Вы можете проверить полный код, включая остальные экземпляры, в myRepl .
Когда код выполняется, передайте 2 параметра type, color
как один object
статическому методу Terminal
. Затем создайте экземпляр new Terminal
, если его нет. После создания нажмите object
на cache
для хранения данных.
Это результат приведенного выше примера:
Когда я передам больше objects
в Terminal
, следующий результат будет выглядеть следующим образом:
Теперь я хочувызывать только последний результат (который является третьим журналом только этого изображения), который содержит все 3 объекта.
Проблема
Проблема в том, что это не похоже на обычную структуру цикла. Очень сложно найти способ установить максимальное число итераций в качестве переменной для вызова единственного последнего результата.
Singleton Pattern
не помогает в этом случае, потому что Singleton Pattern
всегда указывает только сначала Terminal instance
независимо от того, сколько я его верну.
Есть ли способы сделать этопроблема?
Спасибо за внимание.