class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
sayHello() {
console.log(`Hello, my name is ${this.name} and I'm ${this.age} years old.`);
}
}
我可以创建实例为
person = new Person('Alice', 30);
但就我而言,我需要创建许多实例来完成其工作并被删除,但我想在其工作完成后重用该实例。 我知道没有像
this.resetInstance()
这样的API,但是有什么方法可以实现这个吗?
大多数情况下不值得付出努力。但是,如果你想这样做,就在这里:
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
sayHello() {
console.log(`Hello, my name is ${this.name} and I'm ${this.age} years old.`);
}
set(name, age) {
this.name = name;
this.age = age;
}
}
const person = new Person('A', 1000);
person.sayHello(); // Hello, my name is A and I'm 1000 years old.
person.set('B', 2000);
person.sayHello(); // Hello, my name is B and I'm 2000 years old.
只需创建一个缓存即可。
class Person {
constructor(name, age) {
console.log('Person constructor run')
this.name = name;
this.age = age;
}
sayHello() {
console.log(`Hello, my name is ${this.name} and I'm ${this.age} years old.`);
}
}
const instanceCache = {};
function getInstance(name,age) {
if(!instanceCache[`${name}${age}`]){
instanceCache[`${name}${age}`] = new Person(name,age);
}
return instanceCache[`${name}${age}`];
}
const p1 = getInstance('Jack', 18);
const p2 = getInstance('Jack', 18);
const p3 = getInstance('Bob', 20);
console.log(p1 === p2); // true