Right. JS doesn't have objects per se, so people mimic them in various ways, as your engine is doing with DynamicObjects.
But on the juce side there's dynamic objects, which have certain properties we can choose to add as if there it's an object. I don't see a way to instantiate those from the JS side.
There are some loose conventions in JS, such as global functions that creates a JS object and fill in methods and members as needed.
I'll be more concrete. Let's say in my app I have a class 'bicycle'. A bicycle has members style, gears, horn, and methods pedal and break.
In C++ I can create a dynamic object for each bicycle instance I want and pass them to the engine, and the JS user can access them. I would do that with a DynamicObject subclass that adds the right stuff. But - what if the JS user wants to make a 'new' bicycle? Cloning is a poor (and non-standard) approach as it will inherit anything that has been done to the particular bicycle they chose to clone (and keeping a 'clean' one around is more work for the user). Recreating all the steps that I do in C++ is risky - what happens if a member is added?
So - my DynamicObjects do have a Constructor. I would like to access that Constructor in JS, such as:
var Chopper = Bicycle ("Cool", 4, 11);
var Grifter = Bicycle ("Shite", 3, 2);
It isn't pure JS, no, but it's a common way to mimic objects in JS that happens to align with real world use and Juce's DynamicObjects.
PS - I did indeed receive a Grifter for Christmas one year, when I, and every other boy, actually wanted a Chopper.