Esta pregunta se relaciona con What are the best practices to follow when declaring an array in Javascript?¿Se puede agregar una función a una matriz de JavaScript secuestrada?
Digamos que un cliente, llamémosles "D. B. Cooper", tiene una primera exigencia de que el siguiente código se debe ejecutar antes de que cualquier otro tipo de código JavaScript:
Array = function(){
alert('Mwahahahaha');
};
Por otra parte, Cooper requiere que se agreguen funciones personalizadas al objeto Array
incorporado (no el que se secuestró). Por ejemplo, si se Array
unhijacked, esto se haría con:
Array.prototype.coolCustomFunction = function(){
alert('I have ' + this.length + ' elements! Cool!');
};
lo que otorgaría:
var myArray = [];
myArray.coolCustomFunction();
Sin embargo, esto no es compatible con el primer requisito. Por lo tanto, ¿cómo se puede cumplir mejor con los requisitos de D. B. Cooper?
Nota: D.B. incluso escribió a test fiddle para ayudar a asegurarse de que las soluciones cumplan con sus requisitos ... ¡qué hombre!
Actualización: Para aquellos de ustedes que les gusta un desafío: por favor, tratar de encontrar una solución multi-navegador unhijackable a este problema. Por ejemplo, here's un caso de prueba aún más secuestrado (gracias por reformatear este Bergi) que secuestra Array, Object, Array.prototype.constructor y Object.prototype.constructor. Hasta el momento, parece que puede haber una solución específica para este navegador (consulte Bergi's comment on his answer, y avísenos si encuentra una forma de secuestrarlo en FF), pero no está claro en este momento si hay un navegador cruzado solución a esto.
el formato de esta pregunta debe ser material de estudio necesario para los nuevos carteles en SO – rjz
Enviar el documento de requisitos de vuelta a DB Cooper e insistir en los casos de uso para cada demanda. :) – Quentin
@Quentin: Si puede encontrarlo, esa sería una buena opción :) – Briguy37