Qual é a maneira correta de criar uma classe Javascript?

Eu estou tentando descobrir como construir minhas classes de JavaScript (ou objetos singleton) corretamente.

var obj = new Object();
obj.foo = 'bar';
obj.method = function() { ...}

var obj = {
    foo : 'bar',
    method : function() { ...}
}

var obj = function(){}
obj.prototype = {
    foo : 'bar',
    method: function() { ... }
}

Eu quero ser capaz de definir um par de propriedades e atribuir os métodos disponíveis. Eu também gostaria de poder usar coisas comomixins nos objetos para que eu possa estender esses objetos com coisas comoeventos.

questionAnswers(4)

yourAnswerToTheQuestion