Creación de objetos JavaScript utilizando literales frente a funciones de constructor personalizadas

Entiendo que hay varias formas de crear un objeto en javascript y he estado leyendo que la sintaxis literal del objeto generalmente es la preferida. (¿Correcto?

o que no he podido averiguar es si alguna vez hay alguna razón para usar alguna de las otras formas de crear objetos, como una función de constructor personalizada var p = new Person("Adam"))? ¿Es cierto usar una función de constructor personalizado solo si quiero variables privadas o para agregar métodos o propiedades a su prototipo? ¿No hay forma de hacer esto en un literal?

Respuestas a la pregunta(6)

Su respuesta a la pregunta