Я работал над приложением asp.net с поддержкой AJAX. Я только добавил некоторые методы Array.prototype какДобавление пользовательских функций в Array.prototype
Array.prototype.doSomething = function(){
...
}
Это решение работает для меня, причем код повторного использования в «красивой» способом.
Но когда я протестировал его, работая со всей страницей, у меня были проблемы. У нас были некоторые пользовательские расширения ajax, и они начали вести себя как неожиданное: некоторые элементы управления отображали «неопределенные» вокруг своего содержимого или значения ,
Что может быть причиной этого? Я что-то пропустил для модификации прототипа стандартных объектов?
Примечание: Я уверен, что ошибка начинается, когда я модифицирую прототип для массива. Он должен быть совместим только с IE.
Я считаю, что конструкция "for (x in y)" предназначена для итерации над элементами объекта. Для индексированной итерации массива я не думаю, что это подходит. Тем не менее, ваша точка зрения на вмешательство в другой код на странице действительна - особенно если сторонние библиотеки используют in-in таким образом. – harto
Да, инверсия верна - вам следует избегать ... в случае, если какой-то n00b модифицировал прототип Array, и вам следует избегать модификации прототипа Array в случае, если какой-то n00b использовался для ... в массиве. ;) – thomasrutter
_right_ ответ в эти дни - использовать 'Object.defineProperty (Array.prototype, 'method', ...)', который сделает новый метод _non-enumerable_. – Alnitak