Czytałam o nowym języku JavaScript podobnego firmy Microsoft o nazwie maszynopis . W zabaw (przykład część) , nie jest to proste klasy składni Typescript przekształca kodu JavaScript. Pochodzących z programowania tła Java, to było interesujące dla mnie, aby dowiedzieć się, w jaki sposób odbywa się OOP w JavaScript jako skompilowany z maszynopis.
Kod maszynopis:
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)
A odpowiednikiem kodu 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);
Maszynopis część jest bardzo podobny do Javy więc zrozumieć. Teraz moje pytanie brzmi: dlaczego w JavaScript ciało Greeterklasie jest osadzony w anonimowej function()rozmowy?
Dlaczego nie napisać to tak?
function Greeter(message) {
this.greeting = message;
}
Greeter.prototype.greet = function () {
return Hello, + this.greeting;
};
Jaka jest zaleta / wada każdej metody?













