2

これは奇妙です。私は何を間違っていますか?

class Store extends Riot.Observable {
  trigger():void {
   // shouldn't this be completely overwriting the trigger method on riot.observable? 
   console.log("my trigger....");
  }
}

let store = new Store();
store.trigger();

予期される動作: コンソールでの「my trigger....」。私が得たのは、Riot.Observable のトリガーの元の実装です。これは、パラメーターが渡されていないためにエラーになります。

store私が見ることができるオブジェクトを突き刺すstore.__proto__と、私の実装ではそこにトリガーがあります。しかしstore、自分自身には独自の(オリジナルの)コピーがありますtrigger()

https://jsfiddle.net/sidouglas/5spbvpnn/をご覧ください

これを非常に基本的な例で参照しましたが、何が起こっているのかわかりません。

4

1 に答える 1

2

sourceに基づくと、暴動の監視対象はプロトタイプの継承を利用していません。代わりにミックスインとして機能します。typescript ラッパー クラスは、元の riot mixin を呼び出すだけです。関数を上書きするには、インスタンスに割り当てる必要があります。

class Store extends Riot.Observable {
    constructor() {
        this.trigger = function() {
            console.log("My trigger");
        };
    }
}

let store = new Store();
store.trigger();
于 2016-10-12T00:18:25.640 に答える