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

时间:2013-01-14 03:21:06

标签: javascript class module prototype 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");

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

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

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

var greeter = new Greeter("world");

1 个答案:

答案 0 :(得分:7)

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