3

typescriptで次のコードスニペットは、私が言っているようには機能しません。それは自明である必要があります:

declare interface Date {
    toUrlString(): string;
}

Date.prototype.toUrlString = () => {
    return this.toISOString().substring(0, 10);
};

document.write(
    new Date().toUrlString()
    // Error: Object [object Window] has no method 'toISOString'
);

コンパイルされたコードは次のとおりです。

var _this = this;
Date.prototype.toUrlString = function () {
    return _this.toISOString().substring(0, 10);
};
document.write(new Date().toUrlString());

どうすればこれを修正できますか?

4

1 に答える 1

5

=>太い矢印」表記は字句スコープ規則を呼び出します。それが望ましくない場合は、従来の関数を使用してください。

Date.prototype.toUrlString = function() {
    return this.toISOString().substring(0, 10);
};
于 2013-01-31T01:14:59.583 に答える