一直以來在儲存一個實體化的物件時,我習慣用 array。

// Add

var instances = [];
var a = new A();
instances.push(A);
// Remove

/* 對陣列來說增加實體當然沒有問題,不過在移除時的 code 會長這樣 */
arr.splice(arr.indexOf(instanceToRemove), 1);
/* 可讀性不高 */

同事提醒我有 Map/WeakMap 可以用 key-value 來存物件,

// Add

var instances = new Map();
var a = new A();
instances.set(a, a);
// Remove

instance.delete(a);
/* It's pretty simple now */

Map on MDN
http://mdn.io/map

Comments

comments powered by Disqus