Riotjs (Riot typcript) не может переписать метод в классе машинописи
Это странно Что я делаю неправильно?
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();
Ожидаемое поведение: "мой триггер...." в консоли. Я получаю оригинальную реализацию триггера в Riot.Observable, которая выдает ошибки из-за отсутствия передаваемых параметров.
Если я ткну store
объект, который я вижу на store.__proto__
там есть триггер там, с моей реализацией. Но store
У iself есть своя (оригинальная) копия trigger()
Пожалуйста, смотрите https://jsfiddle.net/sidouglas/5spbvpnn/
Я сослался на это очень простым примером, и я не знаю, что происходит.
1 ответ
Основываясь на источнике, наблюдаемые бунт не используют преимущества прототипного наследования. Вместо этого они работают как миксины. Класс-оболочка машинописи просто вызывает оригинальный миксин. Чтобы перезаписать функцию, вы должны назначить ее экземпляру:
class Store extends Riot.Observable {
constructor() {
this.trigger = function() {
console.log("My trigger");
};
}
}
let store = new Store();
store.trigger();