Como podemos ver para comunicar os objetos corretamente precisamos ter algum tipo de mecanismo de armazenamento para os objetos:
storeObject(object) -> f64
- Armazena um objeto e retorna um identificador numérico.getObject(f64) -> object
- Obtém a referência de um objeto por seu identificador numérico.releaseObject(f64) -> object
- Libere uma referência de um objeto do armazenamento, permitindo que sua memória seja liberada.A implementação de algo assim é chamado de alocador. Isso está além do escopo deste tutorial. Poderíamos imaginar uma implementação muito ingênua disso, que é essencialmente apenas um vetor sempre crescente, no qual um objeto é armazenado no vetor e seu índice é retornado como identificador.
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;
}
Há muitas questões que você deve considerar na sua implementação.