此link有一篇文章说: “避免密钥不是增量数字的稀疏数组。其中没有每个元素的稀疏数组都是哈希表。“
使用地图对象会更好吗?
我使用这种数组来存储由它编制的每个对象的ID。我用它来创建Value Objects(DDD)的单例。
我正在创造这种对象:
const ValueObject = (function(){
const instances = [];
class ValueObject{
constructor(value){
Object.defineProperty(this, 'value', {
value: value
});
if(!instances[value]){
instances[value] = this;
}
else {
return instances[value];
}
}
toString(){
return this.value;
}
valueOf(){
return this.value;
}
}
return ValueObject;
})();
写下面的内容会更好吗?
const ValueObject = (function(){
const instances = new Map();
class ValueObject{
constructor(value){
Object.defineProperty(this, 'value', {
value: value
});
if(!instances.get(value)){
instances.set(value, this);
}
else {
return instances.get(value);
}
}
toString(){
return this.value;
}
valueOf(){
return this.value;
}
}
return ValueObject;
})();