No hay diferencia entre "{}" y "new Object()", ambos crean objetos vacíos que heredan de Object (que es lo más alto de la jerarquía de objetos en Javascript, y por lo tanto todo hereda de él)
Aún si existieran diferencias (que desconozco), el uso que se les da es equivalente.
Cita:
Iniciado por buzu Por ejemplo, si un objeto lo vas a usar más de una vez, definitivamente no te conviene usar notación literal, ya que para poder crear una nueva instancia de ese objeto tendrías que copiarlo todo y eso gasta memoria. Por el otro lado, si usas el constructor, solo necesitas llamar nuevamente a new para crear el objeto y todos los metodos no se copian pero permanecen accesibles ya que están, no en el objeto en sí, sino en su prototipo.
La notación literal es mejor por su claridad, pero depende de gustos, como todo lo que se puede hacer de más de una forma. Además la recomendación de usarla es solamente para crear el objeto inicial. Se use la forma que se use, se supone que uno no crea muchos objetos iguales, eso no se hace ni en el modelo clásico ni en el modelo con prototipos. En ambos modelos se crean objetos con las propiedades necesarias, y luego se hereda de ellos. En ninguno de los modelos hay duplicación inútil.
Saludos.