I want to throw an event as set the target to be a custom object - but the constructor for Event does not take 'target' as an arguement, and the property is read only.
When you write dispatchEvent(), the event target is implicitly this.
But you can also write customObject.dispatchEvent()
In that case customObject will be the event target.
Likewise, you can write customObject.addEventListener() in order to listen to that target events.
Call dispatchEvent on the object that you want to be the target.