对于给定的typescript,类是在模块中定义的
module league{
export class Player {
first_name: string;
last_name: string;
constructor(first_name: string, last_name: string){
this.first_name = first_name;
this.last_name=last_name;
}
}
}
,它被翻译成javascript:
var league;
(function (league) {
var Player = (function () {
function Player(first_name, last_name) {
this.first_name = first_name;
this.last_name = last_name;
}
return Player;
})();
league.Player = Player;
})(league || (league = {}));
typescript代码很容易理解,但不太熟悉javascript,谁能解释它生成的javascript背后的逻辑?
Module
module
的逐行解释:
var league;
所以javascript不会抛出一个错误,我们正在使用一个未定义的变量。
(function (league) {
}()
立即执行的函数。必需的,因为scope
仅由javascript中的函数创建。
league || (league = {}
这样模块就可以分成多个部分。如果已定义,则使用||
,否则创建league = {}
逐行。再次使用一个立即执行的函数来创建一个新的作用域(另外,它将有助于继承,但在这里不相关):
var Player = (function () {
})();
正文是function
,使用this
:
function Player(first_name, last_name) {
this.first_name = first_name;
this.last_name = last_name;
}
<标题>更多h1> 了解更多关于立即执行函数和this
的知识,我推荐一本javascript书籍。例如JavaScript的好部分。 标题>标题>