Criação de objeto JavaScript usando literais vs funções personalizadas de construtor

Entendo que existem várias maneiras de criar um objeto em javascript e tenho lido que a sintaxe literal do objeto geralmente é a preferida. (Corrigir?

O que não consegui descobrir é se existe algum motivo para usar qualquer uma das outras maneiras de criar objetos, como uma função de construtor personalizado var p = new Person("Adam"))? É verdade usar uma função de construtor personalizado somente se eu desejar variáveis privadas ou adicionar métodos ou propriedades ao seu protótipo? Não há como fazer isso de forma literal?

questionAnswers(6)

yourAnswerToTheQuestion