What you show is called a Factory Method Pattern.
There is no fundamental flaw in this approach and it is considered an alternative to the constructor pattern.
Pros and cons of both approaches are presented in this blog entry by Eric Elliot:
http://ericleads.com/2013/01/javascript-constructor-functions-vs-factory-functions/
As you can see the only important drawback is the inability to use this
to refer to the newly created object.
But is it a drawback? Be warned that Eric is known for being against constructor function in favor of factory methods.
To make your code cleaner, make the factory method explicit:
var point = {
create : function( opts ) {
...
return {
_isAPoint: true,
color: opts.color,
x: opts.x
};
}
}
The call is now cleaner:
someNiceMap.addPoint( point.create( ... ) );