Я читал о новом JavaScript-подобном языке от Microsoft под названием машинопись . В детской площадке (например , раздел) , есть простой класс в синтаксисе машинописи преобразуется в код JavaScript. Исходя из фона программирования Java, это было интересно для меня , чтобы узнать , как ООП делаются в JavaScript составленные из машинописи.
Код Машинопись:
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)
И эквивалентный код 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);
Машинопись часть очень похожа на Java , так что я понимаю , что. Теперь мой вопрос , почему в JavaScript тело Greeterкласса встроено в анонимном function()звонке?
Почему бы не написать это?
function Greeter(message) {
this.greeting = message;
}
Greeter.prototype.greet = function () {
return Hello, + this.greeting;
};
Что такое преимущество / недостаток каждого метода?













