Как стать автором
Обновить

Комментарии 49

hasOwnProperty, не?
Ну и ужатие иерархии в плоский лист это какое-то извращение, имхо :)
можно и не ужимать, достаточно указать до какой глубины выбирать свойства, значение 1 объединит объекты «как есть»
оператор + вместо ожидаемого слияния объектов

ничего себе ожидание, однако)
в php привык как-то объединять массивы именно таким образом
Аргумент, даже не поспоришь, и причем тут массивы? Для массивов в js есть метода concat
в php массив более широкое понятие, чем в js
Ну меня как бы не особо волнует чем является массив в php, ведь тема топика javascript. А говорить почему в одном языке программирвоания сущность массив себя так ведет, а в другом не так, ну тут просто выругаться хочется.
Когда уже эта толпа школоты, так восторгающаяся «всей мощью яваскрипта» схлынет? В чем причина этой резкой популярности языка вкупе с его полным непониманием массами?
напиши лучше, умник! Сказать, что все плохо можно о чем угодно, а вот обосновать свою мысль получается далеко не у каждого.
не заметил в своем посте ни слова восторга. лень было прочитать целиком? или это стандартный комментарий из разряда «все кругом п-сы, один я Дартаньян»?
Мне не нужно писать лучше, потому что я знаю, что возвращает оператор "+" на объектах, для мерджа объектов использую более правильные и быстрые функции, которые описаны уже везде, по-моему и, используя какие-то языке, не несу в них принципы и привычки из других. Тут проблема в самом понимании, что пхпшный ассоциативный массив != яваскриптовому объекту и общие принципы к ним применять — признак полной профнепригодности
я тоже не несу принципы одного языка в другой, и если бы такая возможность существовала с удовольствием перегрузил оператор + для собственных нужд и был бы счастлив
более правильные и быстрые функции

например, причем с возможностью рекурсивного обхода всех объектов и ограничением глубины
Перегрузкой операторов можно себе не то что коленку, а яйца отстрелить в один прекрасный момент. Так что даже хорошо, что тут его нету. Это примерно, как с расширением прототипов — все школьники знают, что можно любой прототип расширить своими методами и мчатся это делать только потому, что так можно, насрав на инкапсуляцию, поддержку кода и элементарный здравый смысл. Я уверен, что из-за этой дешевой популярности яваскрипта у необразованных масс, он скоро уверенно обгонит пхп по количеству говнокода, на нем написанного и станет точно таким же непрестижным языком.
станет точно таким же непрестижным языком

где пруфлинк, или это личное мнение автора?
Какой нахер пруфлинк? Туда ли ты вообще зашел?
>> Я уверен — это о чем говорит, если не о личном мнении? Или с русским все также плохо, как и с яваскриптом?
я туда зашел. С русским языком у меня все хорошо, а вот у вас с этим явно напряг во фразе:
Я уверен, что из-за этой дешевой популярности яваскрипта у необразованных масс, он скоро уверенно обгонит пхп по количеству говнокода, на нем написанного и станет точно таким же непрестижным языком.

выражается мнение автора относительно популярности js, и в данном случае происходит ни на чем не основанное утверждение, что php является непрестижным языком.
А, лол, ты же из пхпобиженных. Да, пхп считается эталон говнокода и это общепризнанный факт.
Да, пхп считается эталон говнокода и это общепризнанный факт.

очередное пустое утверждение аффтара.
А он разве является престижным? Люди, которые пишут на нормальных языках, а не ширпотребе как пхп, иногда даже пхп-программистов за программистов не считают. И делают это весьма обоснованно

Я с вами ни разу не соглашусь, это тупо стереотип. Есть язык, язык развивающийся активно, язык который сейчас принимает грамотную структуру. Профи пхп получает также как и профи других языков и зп 100 000+ нормальны.
Уже порядком надоело почему люди свои кривые руки прикрывают мнимой кривостью языка.
Люди учитесь грамотно писать код, учитесь грамотно спрашивать, уметь признавать и исправлять ошибки и не делать глупых утверждений если ты не в теме.
После 4-х лет писания кода на php, причем в основном не сайтиков, а всевозможных RIA и игровых проектов, я думаю я в теме что и как в этом стереотипном мире. Тем более что есть с чем сравнивать (и as3 плотненько смотрел и на руби заглядывался) — ушел в java.

Да, развивается очень быстро (по сравнению с некоторыми). Да, появляются новые клевые фишки (которые надо уметь правильно использовать(. Проблема то в другом — люди остаются те же, стандартная библиотека — та же. Ниша — ну куда она денется то.

Поэтому в этом мире еще долго на вопрос какой из фреймворков используете в работе, подавляющее количество ответов будет у того варианта, который называется «свой собственный», а на втором месте — «никакой, он мне не уперся никуда».

Какой еще не престижный язык? Че за чушь? У вас есть альтернатива которая решает задачи js?
Не нужно бугуртить. Пхп действительно пользуется дурной славой. Почему — я написал ниже. А про альтернативы яваскрипту — даст б-г, гугл дарт выпустит, который вот такие вот школокодеры, как автор поста, и не осилят. Тогда всё хорошо. Яваскрипт такой популярный не потому, что он сколь либо вменяемый язык, а потому что да — тупо нету альтернатив, но это не может вечно продолжаться.
я «осилю» любой язык, который мне понадобится, и сделаю это в минимальные сроки, как это уже было не раз, если вы, уважаемый товарищ, не можете даже ОБОСНОВАННО выразить свое мнение и подтвердить его конкретными примерами, молчали бы уж в тряпочку.
Может хватит троллить и хрень писать? Угу? ты ничего не написал по делу, тупо слова «ниочем»!
И не надо говорить про какие-то надстройки который конвертируются в js, ок? Это отдельная тема и в итоге js не отменяет. На любом языке можно писать говнокод. Я лично просто предпочитаю писать код, который соответствует стандартам языка и имеет здравый смысл. Вы видимо предпочитаете «говнокодить» даже в коментах.
А, ты же тоже пхпобиженный, извини, что как с человеком разговаривал.
еще одно выступление ни о чем. При чем здесь конвертирование в js о_О?
Хоть кто-нибудь может указать слабые места? Я не против их исправить! Но ничего конкретного до сих пор не увидел!
Seldon, извини, не сразу вник в твой пост
одного этого "@param cur_l_rec int текущая глубина рекурсии(не изменять)"
хватает чтобы я больше никогда не открыл твой код. Это раз. Во вторых научиться писать обектно ориентированный код и оформлять его логично а не выкладывать задачку для 5 класса как ниипать решение
наконец-то конструктивное замечание, я убрал этот параметр.
а не выкладывать задачку для 5 класса как ниипать решение

я и не говорю, что мое решение самое лучшее, просто один из вариантов, судя по комментариям, далеко не самый хороший, но все конструктивные замечания я готов учесть.

Насчет объектов, согласен можно написать несколько функций обернуть их в один объект, который сам будет выбирать как поступить в конкретной ситуации, но нужно ли это для решения данной задачи?
Мощностью яваскрипта в подавляющем большинстве только и можно восторгаться. За использование некоторых вещей, несомненно мощных, в продакшне надо карать.
я с этим и не спорю
А расскажите о ней, кстати, о мощи этой. Не холивара ради, а чтобы показывать друзьям. Мне правда интересно, в чем ее видят другие люди. Спасибо.
Ох, не люблю я возвращаться к явоскрипту, который за последние два года видел раза три, не больше, но например можно сделать такую милую стейт-машину:

function foo() {
    var init = this.foo;
    console.log("foo");

    foo = function() {
        console.log("bar");

        foo = function() {
            console.log("foobar");
            foo = init;
        }
    }
}

foo();
foo();
foo();
foo();
foo();
foo();
foo();


В результате в консоле получим чередование foo, bar и foobar. Круто? Ну есть немного, юзабельно — еще как: похожий код, который как-то там внутри себя пересобирался и менял свое поведения в видел в продакшне. За что следует оторвать руки авторам подобных вещей — за то, что это да, работает, но допустим уже с setTimeout и setInterval будут проблемы, правда решающиеся врапером в виде function() { foo() } иначе застреваем в одном состоянии.

Можно еще пяток клевых вещей вспомнить, к примеру декорирование объектов налету или работа добавление методов к объекту, вызов коллбека с нужным скоупом…

Ну вот с крутостью добавления нового метода в сконструированный объект — я бы поспорил. Это удобно для «быстрой» разработки, как и стейт-машинка выше, но как архитектурное решение, которое часто используется в продакшне — это ужасно. Коллбек с нужным скоупом — тоже. По моему мнению функция ничего не должна брать откуда-то сама, все что ей нужно — приходит в параметрах, она работает только с этим. Такой подход позволяет сделать код тестируемым и прогнозируемым.
Вообще, у меня есть ощущение, что в яваскрипте слишком много свободы и нет никакого контроля кода, что многие неправильно интерпретируют, не задумываясь о правильности решения делают, как проще и быстрее и как позволяет язык. Хотя это только ощущение.
Вообще, у меня есть ощущение, что в яваскрипте слишком много свободы и нет никакого контроля кода, что многие неправильно интерпретируют, не задумываясь о правильности решения делают, как проще и быстрее и как позволяет язык.

Именно. Народ бросается писать как видит, как удобно сейчас, даже не пытаясь понять как вообще этот язык устроен и работает изнутри (а он очень сильно отличается от того, к чему все привыкли) в итоге рождается такой п%#$ц, что заканчиваются любые слова.

Интересно, что движет людьми, когда у них вложенность одной функции увеличивается чуть ли не до 20, в которой выполняются 3-5 xhr-запроса с кучей коллебеков, которые дергают еще запросы, которые в свою очередь со своими колбеками… б$#@ остановите его кто-нибудь.
Пожалуйста, объясните, как это работает
есть функция foo, которая находится в глобальной области видимости, мы ее вызываем и сохраняем «ссылку» на ее в init (опустим тот момент, что this у нас может являться чем угодно в данный момент), внутри у нас имеется замыкание, внутри которого еще одно замыкание, изначальная функция foo у них является частью области видимости (по этому вопросу отсылаю к манам по замыканиям в js).

А делают у нас эти замыкания и вообще функция foo: они в самой глобальной области видимости (браузере это window) меняют ссылку на самих себя.

т.е. когда при первом вызове у нас window.foo, который является объектом Function смотрит на изначальную функцию. Мы вызываем эту функцию, которая внутри себя меняет ссылку на функцию-замыкание, которая видит все то, что есть в изначальной функции foo и делает тоже самое: меняет ссылку на свое замыкание, которое уже в свою очередь обращается к области видимости изначальной функции и меняет значение ссылки windows.foo на сохраненное в самом начале.

А, теперь все ясно. Смутило именно начальное this.foo
Имхо с такими статьями не стоит соваться на хабр. Что за бред: «Каково же было мое удивление, когда оператор + вместо ожидаемого слияния объектов вернул мне строку…»? Для вас спецификация языка неожиданность?
Код какой-то бред, даже если взглянуть на функцию
function objUnion(objS, objT, rec, repl, max_l_rec, cur_l_rec) что такое cur_l_rec? почему бы функции не возвращать объединенный объект?

А вообще есть библиотечка underscore посмотрите там на реализацию
посмотрел, библиотечная функция производит простое копирование полей одного объекта в другой.
что такое cur_l_rec

а прочитать описание функции, не?
почему бы функции не возвращать объединенный объект

мне так захотелось, ничто не мешает изменить несколько строчек чтобы возвращался объединенный объект.
cur_l_rec int текущая глубина рекурсии(не изменять) — текущая глубина??? НЕ ИЗМЕНЯТЬ? вы случаем не того? батенька? Это как минимум пипец заводить параметр функции и писать в доках не изменять!
Этож пхп-стайл, так что успокойтесь, там такое в порядке вещей.
да ни разу это не php стайл, сейчас php хорошим языком стал, в нем появилось все что необходимо для грамотного написания кода. Если некоторые все еще не уметь писать объектно ориентированный код — это чисто их проблемы, язык тут не при чем
«пхп-стайл» возник не из-за кривости языка или скудности стандартной библиотеки, а из-за низкого порога вхождения и резкой востребованностью, из-за чего в язык кинулись люди, не совсем понимающие программирование в целом, которые и наплодили тонны кода низкого качества. То есть язык виноват косвенно — потому, что оказался востребованным и очень легким. Говоря «пхп-стайл» или «пхп == говнокод» люди имеют в виду не сам язык, а большинство продуктов на нем написанных.
А не array_search ли, без strict параметра может возвращать откровенную ересь, потому что сработало замечательное приведение типов? И об этом надо помнить. Так же как и десятках других проблем связанных со стандартной библиотекой, которые описаны в документации и значит это не баг. Или они, наконец-таки сделали RecursiveDirectoryIterator из стандартной библиотеки рекурсивным?
посмотрел в исходниках Mootools функция делает практически тоже самое что и у меня, но действие происходит за счет двух функций(я и сам уже склоняюсь к этому варианту) и нет возможности задать глубину рекурсии чтобы скопировать в объект только часть свойств, но подключать целый фреймворк ради использования одной функции…
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории