Je lisais à propos de la nouvelle langue JavaScript comme de Microsoft appelé tapuscrit . Dans la cour de récréation (section exemple) , il y a une classe simple dans la syntaxe dactylographiée converti en code JavaScript. Issu d'un milieu de programmation Java, il était intéressant pour moi d'apprendre comment se fait POO en JavaScript compilées à partir tapuscrit.
Le code tapuscrit:
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)
Et l'équivalent du code JavaScript:
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 partie Tapuscrit est très similaire à Java , donc je comprends. Maintenant , ma question est pourquoi en JavaScript le corps de la Greeterclasse est intégrée dans un un anonyme function()appel?
Pourquoi écrire pas comme ça?
function Greeter(message) {
this.greeting = message;
}
Greeter.prototype.greet = function () {
return Hello, + this.greeting;
};
Quel est l'avantage / inconvénient de chaque méthode?













