Estaba trabajando en una aplicación asp.net habilitada para AJAX. que acaba de añadir algunos métodos para Array.prototype comoagregando funciones personalizadas en Array.prototype
Array.prototype.doSomething = function(){
...
}
Esta solución funcionó para mí, siendo posible la reutilización de código de forma 'bonita'.
Pero cuando lo he probado trabajando con toda la página, tuve problemas ... Teníamos algunos extensores de ajax personalizados, y comenzaron a comportarse como inesperados: algunos controles mostraban 'indefinido' en torno a su contenido o valor .
¿Cuál podría ser la causa de eso? ¿Me falta algo sobre modificar el prototipo de objetos estándar?
Nota: Estoy bastante seguro de que el error comienza cuando modifico el prototipo para Matriz. Debería ser solo compatible con IE.
Creo que el constructo "for (x in y)" es para iterar sobre los miembros de un objeto. Para la iteración indexada de una matriz, no creo que sea adecuada. Sin embargo, su punto de interferir con otro código en la página es válido, especialmente si las bibliotecas de terceros están utilizando for-in de esta manera. – harto
Sí, lo inverso es cierto; debe evitar for..in en caso de que n00b haya modificado el prototipo de Array, y debe evitar modificar el prototipo de Array en caso de que algún n00b se haya utilizado para ... in en una matriz. ;) – thomasrutter
la _right_ respuesta en estos días es usar 'Object.defineProperty (Array.prototype, 'method', ...)' que hará que el nuevo método _non-enumerable_. – Alnitak