The first thing to explain about JavaScript objects in Reason is that they're not actually JavaScript objects, they are Reason syntactic constructs that will compile down to JavaScript objects. We use the latter term as a shortcut to refer to the former.
With the realization that Reason objects behave a lot like JavaScript objects, we can understand how Reason's support for JavaScript objects works. This support is baked in, but only if we're targeting JavaScript using BuckleScript. In this project, we are, so here's an example:
/* src/Ch04/Ch04_JsObjects.re */
let bob = {"id": 1, "name": "Bob"}; /* (1) */
let greet(person) =
"Hello, " ++
person##name ++
" with ID " ++
string_of_int(person##id); /* (2) */
let jim = {"id": 2, "name": "Jim", "age"...