为什么TypeScript混合模块和原型模式?

lau*_*ent 4 javascript prototype module class typescript

我在这个页面上看看TypeScript生成的JS代码:

http://www.typescriptlang.org/Playground/

基本上,要创建一个Greeter类,它输出:

var Greeter = (function () {
    function Greeter(message) {
        this.greeting = message;
    }
    Greeter.prototype.greet = function () {
        return "Hello, " + this.greeting;
    };
    return Greeter;
})();

var greeter = new Greeter("world");
Run Code Online (Sandbox Code Playgroud)

所以我想知道他们为什么要混合模块和原型模式?这样做不是一样的:

function Greeter(message) {
    this.greeting = message;
}

Greeter.prototype.greet = function () {
    return "Hello, " + this.greeting;
}

var greeter = new Greeter("world");
Run Code Online (Sandbox Code Playgroud)

Jim*_*lle 7

这里使用模块模式是为了创建一个闭包,允许更多地控制任何已关闭的变量(没有泄漏到全局,没有全局污染),并允许创建'私有'变量(仅通过模块存在的变量)模式的关闭).