Согласно второму ответу здесь , я пытаюсь создать шаблон Singleton
в JS для хранения данных и вызова его прототипов из других экземпляров.
Основная проблема в том, что Singleton
не сохраняет данные после получения первого экземпляра.
[{…}] 0: {firstName: "John", lastName:"Grand"}
Вот как я это сделал:
export default class Terminal {
static cache(output) {
// Singleton
if (!Terminal.instance) {
Terminal.instance = new Terminal(output);
}
return Terminal.instance;
}
constructor(output) {
// Create an array
this.logs = [];
// Switch to an object
const data = Object.assign({}, output);
// Add the object to the array
this.logs.push(data);
// Inspect
console.log(this.logs);
}
}
// instance 1
import Terminal from './terminal.js';
class Person {
constructor(firstName, lastName, input) {
this.firstName = firstName;
this.lastName = lastName;
// Assign the Singleton
this.input = input || Terminal.cache(this);
}
}
let player1 = new Person('John', 'Grand');
// instance 2
import Terminal from './terminal.js';
class Grocery {
constructor(name, stock, input) {
this.name = name;
this.stock = stock;
// Assign the Singleton
this.input = input || Terminal.cache(this);
}
}
let shop1 = new Grocery('Apple', 12);
Я хочу, чтобы ключевое слово new
было внутри класса, когда я определяю Singleton
pattern.
Какие-нибудь советы, чтобы решить мою проблему?
Спасибо.