JavaScript does a remarkable job of hiding memory management from us. What's going on behind the scenes?