Dziedziczenie nie działa elegancko

0

Czołem,
Na wstępie - to jest moje druga rzecz związana z dziedziczeniem. pierwsza to był banalny przykładzik, a druga mnie rozłożyła na łopaty. Cel był taki aby stworzyć klasę, która będzie ogólną klasą do pewnych operacji na tabelach 9które to operację w klasach potomnych będą miały konkretny wyraz. Całość ogólnie wchodziła w skład reactowej apki. Nie da się przepisać całości, podam tylko parę fragmentów mam nadzieję że najistotniejszych, jak nie to pytajcie.
Głowna klasa o której tu mowa


export class Data {
    constructor() {this.trimmingBeforeSort = this.trimmingBeforeSort.bind(this);}

trimmingBeforeSort (y){console.log('trimmingbeforesort');
const no_operation =(x)=>{return x;}

return no_operation ; };
}

OczywiścietrimmingBeforeSort nie robi dokładnie nic- przekształca wejście tożsamościowo - ale jest wykorzystywane przez inne funkcje. Jest zdefiniowane li tylko po to żeby je podmieniać. Oczywiście klasa Data ma całą masę innej treści.
To co się udało to poniżej kodu klasy Data zamieścić nast. kod.



Data.prototype.trimmingBeforeSort =(y)=>{

   
        console.log('Yes I trim');
            const trim = {
        
                custom: (string) => {
        
                    while ((string.charCodeAt(0) <= 64) && (string.length > 1)) {
                        string = string.slice(1)
                    };
                    return string;
                },
        
                numerical: (string) => {
                    while ((string.charCodeAt(0) < 48) || string.charCodeAt(0) > 57) {
                        string = string.slice(1)
                    };
                    return string;
                }
            }
            return (y === 5) ? trim.numerical : trim.custom; }     


I w ten sposób to działa, wykonywana jest faktyczna obróbka ciągu.
Rzecz w tym, że usilnie próbowałem zastosować extends w celu napisania klasycznego dziedziczenia i mimo, że przedtem zrobiłem to na jakimś przykładzie, to teraz nic co zrobiłem nie działa. Nie działa, to znaczy że choć wykonywana jest nowa klasa, to również wykonywana jest stara funkcja trimmingBeforeSort.
Próbowałem to zrobić tak, zakładałem że nowa deklaracja po prostu ndapisze starą jednak tak sie nie dzieje i cały czas wykonywana jest funkcja w wersji nicnierobiącej.



export class DataNew extends Data{


trimmingBeforeSort(y){ console.log('Yes I trim');
const trim = {

    custom: (string) => {

        while ((string.charCodeAt(0) <= 64) && (string.length > 1)) {
            string = string.slice(1)
        };
        return string;
    },

    numerical: (string) => {
        while ((string.charCodeAt(0) < 48) || string.charCodeAt(0) > 57) {
            string = string.slice(1)
        };
        return string;
    }
}
return (y === 5) ? trim.numerical : trim.custom;}


}

Właściwie dlaczego tak się dzieje? Przedtem zrobiłem podobny minimalistyczny przykład i dało się nadpisać bez żadnego ale. Zrozumcie, przejście przez dziedzicznie to dość fundamentalna kwestia a ja nie mam pomysłu.

0

Próbowałem to zrobić tak, zakładałem że nowa deklaracja po prostu ndapisze starą jednak tak sie nie dzieje i cały czas wykonywana jest funkcja w wersji nicnierobiącej.

Powinna nadpisać.

Czy to cały kod? W jaki sposób to odpalasz i co się pokazuje dokładnie? Nie powinny się odpalać obie funkcje naraz (chyba, że sam je w jakiś sposób uruchamiasz).

0

Dzięki, temat do zamknięcia, błąd był gdzie indziej

1 użytkowników online, w tym zalogowanych: 0, gości: 1