ATTENZIONE A TUTTI questo thread e' un proseguo della discussione partita su altro post.
X CARLOMARX ho avviato il thread separato cosi' possiamo continuare qua a discutere.
Ripeto : se hai tempo da buttare via fallo pure. Se posso usare un framework fatto e finito che mi da gia' gli strumenti di cui necessito lo uso. Unitamente al fatto che posso reperire in poco tempo un sacco di plugins gia' fatti e pronti all'uso. In alternativa posso usare anche le mie vecchie libs... o fare qualcosa di nuovo, ma le necessità temporali in azienda hanno la prerogativa su qualsiasi cosa.Di certo non chiedo a nessuno di fare come piace fare a me… Cmq:
1. Dipende da quello che devo fare. Se devo crearmi un singolo effetto animato, lavoro semplicemente su quello, come ho fatto qui: http://forum.html.it/forum/showthre...readid=1497676. Se invece devo modificare massivamente molti dati, come ad esempio molte proprietà del DOM contemporaneamente, mi creo delle librerie apposite ottimizzate per l'occorrenza. E guarda caso spesso mi trovo a lavorare in direzione opposta a come fa jQuery. Ad esempio, proprio per evitare l'abuso degli oggetti che fa jQuery e lo spreco di memoria e di parsing che ne deriva, avevo escogitato questa soluzione (che avevo chiamato "domQuery"): https://developer.mozilla.org/en/Ja...unction#Example
su dom query :: Ma perche' reinvatare la ruota ???? C'e' già ed e' rotonda!!!
Cnfusione con lo scoping ?????????
2. Per quanto riguarda l'object oriented, il problema è che fai confusione con lo scoping. Si tratta di due questioni completamente diverse. JavScript è sempre stato un linguaggio object oriented, ma era carente fino a poco tempo fa per quanto riguardava lo scoping. Per questo motivo è stato inventato l'operatore let, che ha egregiamente risolto un bel po' di problemi, soprattutto per quanto riguardava l'abuso del currying:
Prova te ad accedere dentro un callback a "this" oppure dentro un metodo privato...
No JS non e' oo e la sua gestione dello scoping ne e' una delle tante dimostrazioni. QUando lo capirai sarà davvero un gran giorno. RIpeto fare nella porzione di codice adibila alle dichiarazioni degli attributi( porzione che in realtà non esiste in quanto posso dichiare attributi dove mi pare nella funzione che mi simula l'oggetto ) this.campo = "atrrPubblico" non e' oop.
Come appunto anche dover dichiarare var campo = "attrPrivato" sono solo acrocchi che sfruttano la enclosures per gestire qualcosa di simile ad attributi o metodi privati / publlici.
Mi sa che non hai capito l'esempio che ti ho fatto. Se ho un metodo privato
var metodoPrivato = function(){}
e voglio accedere ad uno degli attributi della classe che era un attr pubblico e dichiatato
this.attrPubb = "campo"
NON POSSO !!!! Poiche' quella var non ha visibilità nel metodo ma la visibilita che mi manca e' propio quella di this !!!! Quindi un metodo "privato" non ha conoscenza della classe che lo avvia ... FOLLIA !!!! e per evitare cio
var self = this ; // E DA QUI NON SCAPPI!!!!
Se non fai cosi' non avrai mai a disposizione il riferimento del "caller" in un metodo privato. E tale riferimento e' proprio la classe stessa.... NON E' OOP! !!!!!
let non serve a nullla !
Diomio sono arrivati a questo ..... js fa sempre piu' schifo !!!! Ma ti rendi conto di cosa e' questa cosa ???? SI chiamano "pezze" sono istruzioni e in questo caso costrutti che servono a mettere una pezza per aver il codice funzionante.codice:
<script type="text/javascript;version=1.7">
var a = 5;
let (a = 6) {
a++;
alert(a); // 7
}
alert(a); // 5
</script>
Diomioche scifo sta cosa... mi pare di tornare su assembly quando eseguivi il push dei registri per poi fare il pop ..... dopo le sotto procedure....
Cheschifo ripeto e questa la chiami OOP.... OOP richiede che le abbiano una determinata gestione dello scoping. QUesta cosa che vedo qui ..... => OMG
beh mi pare che let .... sia un costrutto del linguaggio ... non capisco il senso di questa affermazione.
Come vedi non si fa uso di funzioni…
Devo fare un paio di test a riguardo, resta cmq innamovibile il fatto che non esiste in javascript la seguente dichirazione :3. Che vuol dire che var a = function () {} non possiede un costruttore??? In js solo gli oggetti speciali null e undefined non posseggono costruttori: in questo caso il costruttore di a è Function:
codice:
var a = function () {};
alert(a.constructor); // Function
var b = new a.constructor("alert(\"Ciao mondo!\");");
b(); // "Ciao mondo!"
Semmai, mi dirai, il vero problema di Function è che è un costruttore non protitizzabile:
codice:
function FunzioneSpeciale () {}
FunzioneSpeciale.prototype = new Function("");
alert(new FunzioneSpeciale()); // errore
non solo a livello di sintassi ma a livello concettuale del codice, queste cose si simulano sempre sempre !!! => JS non rispetta OOP.codice:class A { public campo1 private campo2 public A( ) {} }
Faccio 2-3 test e poi aggiungo le considerazioni, che ho 1 dubbio su una cosa riguardo alla simulazione del costruttore di default in js( simulazione si perche' la struttura std e necessaria per un linguaggio oop non c'e' ! )
Sono prefettamente daccordo, il 90% di chi usa js non sa cosa sta usando. Certo. Unitamente al fatto si jquery, la gente pensa poi che jquery sia js... js ha molto oltre jquery. Ma ripeto rimane un linguaggio funzionale. Nulla di quanto potrai dire cambierà le cose. L'utilizzo OOP di js e' solo una emulazione. Js non ha un'identità ben definita come linguaggio ma il suo comportamento, i suoi costrutti etc... lo rendono piu' funzionale che OO .La risposta è sì, c'è un bug.
Io credo che il vero problema di JavaScript è che è spesso un linguaggio sconosciuto a chi lo usa.
Eccolo.Adesso vado, se vuoi apri un thread apposito.
P.S.
il comunismo e' morto![]()