JavaScript e' gia' OO ... non puoi renderlo OO visto che nasce OOOriginariamente inviato da Linusss
Volendo rendere javascript OOP
se usi metodi privati hai poche chances ... i metodi in prototype non possono accedere al private scope del costruttore se non tramite un bridge pubblico e creato per ogni istanza.Originariamente inviato da Linusss
ho ovviamente la necessità di stanziare nuovi oggetti, e per ora utilizzo questa sintassi:
...
Questo, a parte essere molto leggibile come codice, crea a tutti gli effetti una nuova classe, con una variabile e un metodo private, e una variabile e un metodo pubblico.
un solo metodo pubblico nel costruttore (si chiama metodo privilegiato, capace di overloadare la prototype) ... 10 istanze, 10 nuove funzioni per ogni istanza.Originariamente inviato da Linusss
Leggendo in giro ho notato che molti utilizzano il prototype ...
Che differenza c'è tra queste due sinstassi? Il risulatato è lo stesso, ma il primo,almeno per quanto mi riguarda, è più leggibile.
La prima cosa che mi salta in mente, è che "forse" con classi che contengono molti metodi ci vorrebbe più tempo ad istanziarle nel primo caso, mentre con prototype la classe risulterebbe più leggera, sbaglio?
1 solo metodo pubblico in prototype, 10 istanze, 1 sola funzione per tutte assegnata per riferimento.
errato, ne esiste uno ed uno solo, il prototype.Originariamente inviato da Linusss
Eredità
Dovendo usare l'eredità, mi sono accorto che anche qui esistono vari metodi per realizzarla:
Eredita' significa che classe B che stende A e' sia instanceof A che instanceof B
Nel tuo esempio nessuno e' istanceof parent, quindi il risultato non e' identico.
dipende se vuoi estendere o fare altro ... per estendere hai bisogno delle prototypes, per fare altro no, ma non stai estendendo un granche'.Originariamente inviato da Linusss
la sintassi senza prototype mi sembra più leggibile.
Quale bisogna usare?
bene, approfondisci bene pero' il tutto perche' continuo a pensare ci sia un po' di confusione.Originariamente inviato da Linusss
Non uso nessuna lib, le sto facendo io le librerie.
In bocca al lupo per la lib![]()