Questa domanda è legata alla What are the best practices to follow when declaring an array in Javascript?È possibile aggiungere una funzione a un array JavaScript dirottato?
Diciamo un cliente, chiamiamoli "D. B. Cooper", ha un primo requisito che il seguente codice deve essere eseguito prima di qualsiasi altro codice JavaScript:
Array = function(){
alert('Mwahahahaha');
};
Inoltre, Cooper richiede che le funzioni personalizzate debbano essere aggiunte all'oggetto Array
integrato (non quello dirottato). Per esempio, se è stato Array
unhijacked, questo sarebbe essere fatto con:
Array.prototype.coolCustomFunction = function(){
alert('I have ' + this.length + ' elements! Cool!');
};
Che sarebbe permettersi:
var myArray = [];
myArray.coolCustomFunction();
Tuttavia, questo non è compatibile con il primo requisito. Quindi, come puoi soddisfare al meglio entrambi i requisiti di D. B. Cooper?
Nota: D.B. anche scritto a test fiddle per aiutare a garantire che le soluzioni soddisfino i suoi requisiti ... che ragazzo!
Aggiornamento: Per quelli di voi che come una sfida: per favore cercate di trovare una soluzione cross-browser unhijackable a questo problema. Ad esempio, here's un caso di test ancora più dirottato (grazie per la riformattazione di questo Bergi) che dirotta Array, Object, Array.prototype.constructor e Object.prototype.constructor. Finora, sembra che ci possa essere una soluzione specifica per il browser (vedi Bergi's comment on his answer e facci sapere se trovi un modo per dirottarlo in FF), ma non è chiaro a questo punto se c'è un cross-browser soluzione a questo.
il formato di questa domanda dovrebbe essere richiesta materiale di studio per nuovi poster su SO – rjz
Inviare il documento dei requisiti di nuovo al DB Cooper e insistere su casi di utilizzo per ogni esigenza. :) – Quentin
@Quentin: Se riesci a trovarlo, sarebbe una buona opzione :) – Briguy37