Цитата:
|
Kolyaj, ничуть.
Я хочу услышать почему это считается плохо:) |
Но тут нет тех, кто считает, что это плохо.
|
Kolyaj, ну не зря же так, наверное, считают, должна быть какая-то причина.
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Массив можно запросто перебирать через for-in, если порядок не важен, а сам массив длинный и сильно разреженный. Ну, или если кроме индексов у массива есть другие свойства (мало ли)...
Object.prototype расширять можно, но возникает проблема контроля за именами. Объекты в js - это не словари, не хэши, не что-то там жёсткое, они не пусты и изначально что-то наследуют, просто стандартные наследуемые свойства для удобства исключены из перебора (как будто их нет), а имена всем известны. Наследуемые свойства будут видны у всех объектов, и обычные для объектов операции - перебор свойств, проверка наличия свойств, проверка наличия и типа значения, удаление и т.д., всё это может потребовать дополнительного алгоритма отсечения наследуемых свойств прописанных руками в Object.prototype. В принципе, если скрипт свой, то ничего страшного в этом нет, хуже когда скрипт чужой объединяется с твоим, и начинаются конфликты - ты перебор делаешь, а контроль в нём не предусмотрел, и понеслось. Где-то отсюда и растут ноги у идеи "не трогать Object.prototype". В отличие от объектов массивы крайне редко используются, как "хэши", перебор индексов через for не затрагивает наследуемых свойств (если не обозвали их числами), расширение прототипа массивов не выходит за рамки своего типа в отличие от всепоглощающего Object, поэтому-то и совершенно спокойное отношение по поводу расширения Array.prototype. То же самое касается любых других отдельных типов объекта - String, Number... |
Dmitry A. Soshnikov, вы таки пытаетесь меня троллить? Зачем? Что значит ваше это «форум не подневольный»? Что значит ваше это «садитесь учить питон и JS»? Не пора ли вам самому подучить хотя бы реальный JS и перестать уже парить в стратосфере? Как соотносятся данный форум и юриспруденция? Для чего вы мне рассказывали, что можно итерировать массив for..in'ом?
Вы высказали свое мнение, за что я вам благодарен, т.к. очевидно, что вы таки, в общем, разбираетесь в динамических языках. Тем не менее, несмотря на свой же совет воспринимать происходящее как «всего лишь форум», сами вы отвечаете в довольно агрессивной манере, обвиняете меня в незнании питона (форум, кстати, совсем не про питон; а касательно аспектов этого языка я консультировался с людьми, которые пишут на нем более пяти лет). Я узнал ваше мнение и даже поблагодарил за него, а вы продолжаете отвечать — отвечать за остальных участников. И поэтому-то диалог у нас с вами так быстро и развалился. Я в очередной раз убедился, что диалог с человеком, который в нике указывает настоящие Ф.И.О., длится не более пары реплик. Далее начинаются размахивания ЧСВ, ссылки на Капитана Очевидность, попытки отвечать за всех, и т.д. Я хотел с вами поговорить о тонкостях языка, о том, как трудно опознать грань между практичностью и красотой (ведь вы же знаете JS 1.7) и как трудно на этой грани удержаться… |
Dmitry A. Soshnikov, и это — всю дорогу, я вам про Фому, а вы мне про Ерему…
|
Цитата:
Object.extend(Array.prototype, { _each: function(iterator) { for (var i = 0, length = this.length; i < length; i++) iterator(this[i]); }, Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
var _each = arrayProto.forEach; // use native browser JS 1.6 implementation if available function each(iterator) { for (var i = 0, length = this.length; i < length; i++) iterator(this[i]); } if (!_each) _each = each;Потому что each, в результате, не то же самое, что _each, и в IE все функции использующие ее будут работать по другому. |
Часовой пояс GMT +3, время: 15:07. |