Javascript 如何使用static关键字定义带参数的单例模式?
根据来自的第二个答案,我试图在JS中创建Javascript 如何使用static关键字定义带参数的单例模式?,javascript,node.js,import,singleton,export,Javascript,Node.js,Import,Singleton,Export,根据来自的第二个答案,我试图在JS中创建单例模式,用于存储数据并从其他实例调用其原型 一个主要问题是,Singleton在收到第一个实例后不存储数据 [{…}] 0:{姓氏:“约翰”,姓氏:“格兰德”} 我就是这样做的: export default class Terminal { static cache(output) { // Singleton if (!Terminal.instance) { Terminal.inst
单例
模式,用于存储数据并从其他实例调用其原型
一个主要问题是,Singleton
在收到第一个实例后不存储数据
[{…}]
0:{姓氏:“约翰”,姓氏:“格兰德”}
我就是这样做的:
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);
当我定义Singleton
模式时,我希望将new
关键字放在类中
有什么方法可以解决我的问题吗
谢谢。当对象已经存在时,cache()
方法需要将输出
推送到日志
数组中
static cache(output) {
// Singleton
if (!Terminal.instance) {
Terminal.instance = new Terminal(output);
} else {
Terminal.instance.logs.push(Object.assign({}, output));
}
return Terminal.instance;
}