1

我的打字稿代码:

export class File {
    isOpenEnabled() {
        return false;
    }

    openClicked() {
        debugger;
    }
}

define([], function () {
    return {
        handler: new File()
    };
});

变成:

define(["require", "exports"], function(require, exports) {
    var File = (function () {
        function File() {
        }
        File.prototype.isOpenEnabled = function () {
            return false;
        };

        File.prototype.openClicked = function () {
            debugger;
        };
        return File;
    })();
    exports.File = File;

    define([], function () {
        return {
            handler: new File()
        };
    });
});

为什么要插入原型?

谢谢 - 戴夫

4

2 回答 2

2

javascript中的函数是对象。

例如:

function MyClass () {

  this.MyMethod= function () {};
}

每次MyClass创建一个新的实例时,MyMethod也会创建一个新的实例。更好的方法是将函数添加MyMethod到 的原型中MyClass

MyClass.prototype.MyMethod = function(){};

这样,无论MyClass您创建多少个实例,都只会MyMethod创建一个。

回到您的问题,我认为 typescript 正在对您在File类中定义的方法进行这种优化。

于 2013-11-09T21:17:03.417 回答
1

有两个原因:

  • 内存优化(Alberto 已经提到)
  • 原型继承

第二个原因和第一个原因都很好地涵盖在:http: //javascript.crockford.com/inheritance.html

于 2013-11-10T23:47:00.970 回答