Estaba leyendo sobre el nuevo lenguaje JavaScript similar de Microsoft llamada mecanografiado . En el patio de recreo (ejemplo sección) , hay una clase simple en la sintaxis de mecanografiado convertido a código JavaScript. Viniendo de un fondo de programación Java, fue interesante para mí de aprender cómo se hace en programación orientada a objetos JavaScript como compilado a partir de mecanografiado.
El código mecanografiado:
class Greeter {
greeting: string;
constructor (message: string) {
this.greeting = message;
}
greet() {
return Hello, + this.greeting;
}
}
var greeter = new Greeter(world);
var button = document.createElement('button')
button.innerText = Say Hello
button.onclick = function() {
alert(greeter.greet())
}
document.body.appendChild(button)
Y el código JavaScript equivalente:
var Greeter = (function () {
function Greeter(message) {
this.greeting = message;
}
Greeter.prototype.greet = function () {
return Hello, + this.greeting;
};
return Greeter;
})();
var greeter = new Greeter(world);
var button = document.createElement('button');
button.innerText = Say Hello;
button.onclick = function () {
alert(greeter.greet());
};
document.body.appendChild(button);
La parte de imprenta es muy similar a Java por lo que entiendo eso. Ahora mi pregunta es ¿por qué en JavaScript del cuerpo de la Greeterclase se incrusta en una anónima una function()llamada?
Por qué no escribir esto así?
function Greeter(message) {
this.greeting = message;
}
Greeter.prototype.greet = function () {
return Hello, + this.greeting;
};
¿Cuál es la ventaja / desventaja de cada método?













