Meno invasivo te lo spiego subito.Originariamente inviato da iko82
Mi sapresti spiegare nel concreto perchè ritieni sia meglio questo? Voglio dire... Cosa intendi per meno invasivo?
Inoltre cosi facendo questi metodi si possono applicare solo se uso la funzione $() mentre se passo per document.getElementById() no. Mi sapresti dire come è possibile renderli disponibili anche senza passare per la funzione $() ?
Grazie
Ciao
Fede
Immagina che io faccio una libreria che fa certe cose e per farle aggiungo dei metodi agli elementi html.
Immagina che tu crei un altra libreria e anche tu aggiungi dei metodi agli HTMLElement.
La situazione peggiore è quella in cui due o più metodi delle nostre librerie fanno la stessa cosa ( o peggio ancora cose diverse ) e si chiamano allo stesso modo.
Ora, se per qualche motivo un terzo malcapitato avrà la necessità di usare tutte e due le librerie, rischierà di non vederle funzionare proprio perchè la seconda libreria sovrascriverà se necessario i metodi della prima.
Esistono poi altri vantaggi. Il primo è che è molto più veloce utilizzare una classe con tutti i metodi ereditati dal prototype piuttosto che dover ogni volta fare un ciclo.
Il secondo è che è possibile modificare leggermente lo script per operare contemporaneamente con più elementi; in jQuery ad esempio è possibile una cosa del genere:
L'unico "svantaggio" come dici tu è che in questo modo i metodi sono disponibili solo richiamando la funzione $; d'altra parte una volta creata una funzione come $ difficilmente torni al document.getElementByIdCodice PHP:
$("a").attr("href", "javascript:void(0);")
![]()