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作成しても、作成されるのは 1 つだけMyMethodです。

質問に戻りますが、typescript は、Fileクラスで定義したメソッドに対してまさにこの種の最適化を行っていると思います。

于 2013-11-09T21:17:03.417 に答える