作者:mobiledu2502899415 | 来源:互联网 | 2023-09-12 19:00
IwasreadingaboutthenewJavaScript-likelanguagefromMicrosoftcalledTypeScript.Intheplaygr
I was reading about the new Javascript-like language from Microsoft called TypeScript. In the playground (example section), there is a simple class in TypeScript syntax converted to Javascript code. Coming from a Java programming background, it was interesting for me to learn how OOP is done in Javascript as compiled from TypeScript.
我正在阅读微软称为TypeScript的类似Javascript的新语言。在操场(示例部分)中,TypeScript语法中有一个简单的类转换为Javascript代码。来自Java编程背景,我很有兴趣了解如何在使用TypeScript编译的Javascript中完成OOP。
The TypeScript code:
TypeScript代码:
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)
And the equivalent Javascript 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);
The Typescript part is very similar to Java so I understand that. Now my question is why in Javascript the body of the Greeter
class is embedded in a an anonymous function()
call?
Typescript部分与Java非常相似,所以我理解。现在我的问题是为什么在Javascript中,Greeter类的主体嵌入在匿名函数()调用中?
Why not write it like this?
为什么不这样写呢?
function Greeter(message) {
this.greeting = message;
}
Greeter.prototype.greet = function () {
return "Hello, " + this.greeting;
};
What is the advantage/disadvantage of each method?
每种方法的优点/缺点是什么?
6 个解决方案