Como fazer uma aula em JavaScript?

Existem muitas maneiras de fazer a mesma coisa em JavaScript. No entanto, eu peguei algumas maneiras e algumas maneiras que francamente não entendo. Alguém poderia me ajudar a esclarecer algumas coisas? (Eu aprendi primeiro OOP em PHP.)

Então uma aula pode ser feita assim:

var object = new class(constructparams) {
    var private_members; // Can be accessed from within the code inside this definition only.
    this.public_members; // Can be accessed from everywhere.

    var private_functions = function() {}
    this.public_functions = function() {}
}

object.prototype.semi_public_members = function() {
    // Will be public, but can only access public members and methods.
    // E. g. private_members; is not available here.
}

Está tudo correto até agora?

Então alguém gosta da abordagem de função anônima auto-executável para criar um namespace. Qual é o sentido disso, quando você tem esse caminho acima que faz a mesma coisa, fornece um namespace?

E por último você tem a notação literal do objeto que eu não entendo.

var object = { // Something strange in here }

O que está acontecendo lá? É JSON? Como é usado, como posso usá-lo? Quais são os benefícios de usar esse caminho em vez de usar o método que descrevi? Por que você prototiparia em vez de fazer a aula corretamente na primeira vez?

questionAnswers(4)

yourAnswerToTheQuestion