Вы можете эмулировать это поведение, используя обертывающий объект:
const reference = value => ({
value,
free() { this.value = undefined },
});
const val = ref => ref.value;
let person = reference({name: "Annah", age: 18});
let pointer = person;
console.log(val(person));
pointer.free();
console.log(val(person));
Благодаря тому, что вы больше не можете получить доступ к person.name
, вы должны разыменовать его, используя val(person).name
.
Теоретически вы можете создать двапеременные, ссылающиеся на одно и то же:
with({
person: undefined,
get pointer() { return this.person; },
set pointer(value) { this.person = value },
}) {
person = { some: "test" };
console.log(pointer);
pointer = undefined;
console.log(person);
}
Но, пожалуйста, не делайте этого (кроме веселья).