Occasionalmente c'è un JS framework o una libreria che ritiene sia una buona idea aggiungere alcune nuove funzionalità di rete al prototipo di Object
o Array
. Non riesco a trovare altri esempi in questo momento, ma ricordo che ho avuto problemi con quello prima. Ovviamente, così facendo si interrompe il buon vecchio ciclo for(...in...)
, perché improvvisamente anche queste proprietà sono enumerate. Per aggirare il problema è necessario controllare ogni proprietà enumerata con .hasOwnProperty()
prima di accedere. Che è ingombrante, quando si cerca di scrivere codice robusto.Puoi creare un oggetto in Javascript che NON eredita da Object?
Quindi mi sono chiesto: c'è un modo in cui potrei creare i miei oggetti così, che non ereditano da Object
? L'iniziale giocata con .prototype
non ha prodotto risultati. Forse c'è qualche trucco? O tutto erediterà sempre da Object
e non c'è nulla che io possa fare al riguardo?
Aggiunto: Suppongo che avrei dovuto notare che lo voglio per gli script client nei browser e che la compatibilità dovrebbe includere IE6 o almeno IE7. Gli altri requisiti della versione del browser sono più clementi, anche se sono i migliori e meglio, naturalmente. (Sì, purtroppo, il mondo delle imprese vive ancora in IE-mondo ...)
* cattivo * vecchio 'per (... in ...)' ciclo sicuramente –
@RobAgar - perché così? Davvero, sono stanco di scrivere cose come 'per (var i, l = myArray.length; i
di solito i framework che cambiano il prototipo, forniscono anche un modo per scorrere gli elementi. In Mootools, 'myObj.each()' farà il lavoro .. anche '[" foo "," bar "]. Each()' – pleasedontbelong