xxxxxxxxxx
class DefaultDict {
constructor(defaultVal) {
return new Proxy({}, {
get: (target, name) => name in target ? target[name] : defaultVal
})
}
}
const counts = new DefaultDict(0)
console.log(counts.c) // 0
xxxxxxxxxx
function makeDefaultDict(factory) {
return new Proxy({}, {
get(target, name) {
if (!(name in target)) {
target[name] = factory()
}
return target[name]
}
})
}