オブジェクトをやり取りできるよう、ストレージの仕組みが必要です。
storeObject(object) -> f64
- オブジェクトを格納し、数値をハンドルとして返すgetObject(f64) -> object
- 数値ハンドルから、オブジェクトへの参照を返すreleaseObject(f64) -> object
- メモリを開放するために、オブジェクトを参照を解除このような実装のことを、アロケータといいます。(詳細はこのツアーの範疇を超えています)
本質的には、オブジェクトを格納することができ、その際にインデックスがハンドルとして返される無限のベクタです。
let storage = [];
function storeObject(obj) {
let index = storage.length;
storage.push(obj);
return index;
}
function getObject(handle) {
return storage[handle];
}
function releaseObject(handle) {
return storage[handle] = null;
}
実装としては考慮すべき点が多くあります。