It's a way of creating an object which allows this to be used during the creation.
This offers some direct reference to the object during instantiation that object literal syntax does not allow.
var o = new function() { this.num = Math.random(); this.isLow = this.num < .5; // you couldn't reference num with literal syntax };
The object literal version would need to look like this:
var o = { num: Math.random() }; o.isLow = o.num < .5;
So the anonymous function is basically used as a temporary constructor. We could just as easily use a named constructor function, but since we don't really care about the constructor, we just use a "disposable" one.
And of course since it's a function, it creates a local variable scope, so if you assign any functions to the new object, they will be able to close over local variables.