Četl jsem o novém JavaScript-jako jazyk od společnosti Microsoft s názvem strojopisem . Na hřišti (příklad sekce) , existuje jednoduchý třídy v syntaxi strojopisu převedeny na kód JavaScriptu. Přicházející z programovacího jazyka Java pozadí, to bylo zajímavé pro mě naučit, jak se OOP provádí v jazyce JavaScript jako sestaven z strojopisem.
Strojopisu kód:
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 ekvivalent JavaScript kód:
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);
Strojopisu část je velmi podobný Javě, takže chápu, že. A teď moje otázka je, proč v JavaScriptu tělo Greetertřídy je zakotven v anonymním function()hovoru?
Proč ne psát to takhle?
function Greeter(message) {
this.greeting = message;
}
Greeter.prototype.greet = function () {
return Hello, + this.greeting;
};
Jaká je výhoda / nevýhoda každé metody?













