Автору: старайтесь поменьше обращать внимание на провокации троллей (сам знаю, что иной раз поддаёшься и потом, из-за эмоций, ещё же и вас будут считать «агрессивным элементом», поэтому — надо научиться, либо забивать на «профессиАналов», либо строить корректно речь так, чтобы тролли сами почувствовали свою бестактность и бессмысленность их постов). Я что-то похожее писал (правда, не про музыку, а в целом — zeroed.habrahabr.ru/blog/58593/#comment_1580781).
> а через айдишку, раз и пляшет %)
Не понял, вы хотите сказать, что jQuery'вский $('#some-id') быстрее родного document.getElementById? Это не возможно, поскольку jQuery внутри себя использует тот же document.getElementById.
Удобно, просто явно пункт не для выделения достоинств jQuery, поскольку, если нужна короткая функция именно для получения элемента по id, то можно и просто алиас для document.getElementById сделать:
var data = [
{id: 1, name: 'a'},
{id: 3, name: 'c'},
{id: 2, name: 'b'}
];
// сортировка по "name"
var sorted = data.sort(function (a, b) {
var aName = a.name.toLowerCase();
var bName = b.name.toLowerCase();
if (aName == bName) {
return 0;
}
if (aName < bName) {
return -1;
}
return 1;
});
Соответственно, можно улучшить — сделать универсальный функтор сортировки, который будет принимать имя поля параметром и возвращать соответствующую функцию.
Следовательно, этот массив надо сортировать и для этого и пришлось написать быструю сортировку на Javascript и бинарный поиск.
В качестве тренировки, quick-sort можно написать, но, вообще, в JS у массивов есть метод .sort(sortFunctor), который принимает функтор сортировки. Массив объектов по конкретному полю — вполне нормально сортируется этой функцией. К тому же, Си-шный код будет работать быстрее (и, скорей всего, алгоритм на уровне реализации выбран тоже эффективный, может, и тот же quick-sort).
ой, не надо вот этот пункт было достоинством приводить =) ладно бы вы написали о «глубоких» CSS-селекторах, но взять элемент по id, и это преимущество jQuery — стыдно…
> Кто-то из снобов скажет — родители виноваты во всем — ан нет.
Но очень во многом.
У меня (пока) нет детей, но, я думаю, один из главных моментов — это помочь развить (не мешать, не навязывать, не ограничивать) потенциал, который реализуется в сфере, куда ребёнок (в уже сознательном возрасте) начинает тянутся. Естественно, это поколение будет ещё плотнее связано с компьютерами («экранами», как вы назвали), роботами и т.д., но, если подход будет созидательно-творческий, вряд ли в этом будет что-то плохого. Я уверен, что на каждом этапе поколения, родители осознавали, что появляются в прогрессе вещи, большое/не правильное (ещё как-то можно назвать) потребление которых, пагубно скажется на их детях. Но, дети растут, используют эти «экраны», создают новые и т.д. И прогресс движется вперёд. Время диктует «атмосферу». Поэтому, очень многое, всё-таки, зависит именно от родителей.
Творчество — это процесс, мало зависящий от конкретики. Творчески писать программу, музыку, стихи, рисунки и т.д. — это одно и то же. Я знаю много программистов-музыкантов (я — один из них, кстати ;)).
А программирование — наиболее творческая профессия (возможно, в числе первых). И этот синтез — точных наук и созидательного творчества — наинтереснейшее дело.
Другое дело — «кодерский копи-паст», тогда, конечно, можно говорить, «вам тут не это...».
> B._super.prototype.test.apply(this, arguments); — некрасиво и неудобно… Гораздо удобнее писать this.__base()
да естественно, я лишь пример привел, можно хоть как подогнать под свои нужды, под синтаксис, который кажется удобным
> конструктор разнесен с методами, это тоже неудобно и некрасиво
да это мелочи всё, дописывается ещё «2-3» строками
> как вы сами заметили, нет статики
А что Вы подразумеваете под статикой?
> Собственно мой код и крутится вокруг того, чтобы обеспечить некий syntax sugar.
А я ничего против и не имею. Каждый создаёт свои обёртки, которые наиболее удобны для него. Наследование же в JS и так изначально есть, поэтому любая обёртка — есть обёртка, и является лишь синтаксическим сахаром, определяющим относительное удобство.
> Что конкретно вы считаете в нем лишним?
Да нет, лишним в подобных обёртках мало, что может быть, поскольку они относительные, и пишутся для удобства, увиденное через призму конкретных людей. Под «лишним» я больше имел в виду привязку к jQuery, но Вы уже ответили, зачем он тут.
ага =) да и новый Scooter тоже (может, потому что я был раньше фанатом Скутера )))
Хороший блог, вполне достойно освещаете темы.
Суть та же во всех языках, о которых можно говорить, применительно к этому термину. Коллбэк функции можно назвать функтором.
Не понял, вы хотите сказать, что jQuery'вский $('#some-id') быстрее родного document.getElementById? Это не возможно, поскольку jQuery внутри себя использует тот же document.getElementById.
en.wikipedia.org/wiki/Function_object
var $ = document.getElementById;$('some-id');
Но, естественно, основная суть jQuery не в этом.
var data = [ {id: 1, name: 'a'}, {id: 3, name: 'c'}, {id: 2, name: 'b'} ]; // сортировка по "name" var sorted = data.sort(function (a, b) { var aName = a.name.toLowerCase(); var bName = b.name.toLowerCase(); if (aName == bName) { return 0; } if (aName < bName) { return -1; } return 1; });Соответственно, можно улучшить — сделать универсальный функтор сортировки, который будет принимать имя поля параметром и возвращать соответствующую функцию.
В качестве тренировки, quick-sort можно написать, но, вообще, в JS у массивов есть метод .sort(sortFunctor), который принимает функтор сортировки. Массив объектов по конкретному полю — вполне нормально сортируется этой функцией. К тому же, Си-шный код будет работать быстрее (и, скорей всего, алгоритм на уровне реализации выбран тоже эффективный, может, и тот же quick-sort).
в данном случае эффективней сразу setTimeout(func, 25);
ой, не надо вот этот пункт было достоинством приводить =) ладно бы вы написали о «глубоких» CSS-селекторах, но взять элемент по id, и это преимущество jQuery — стыдно…
Но очень во многом.
У меня (пока) нет детей, но, я думаю, один из главных моментов — это помочь развить (не мешать, не навязывать, не ограничивать) потенциал, который реализуется в сфере, куда ребёнок (в уже сознательном возрасте) начинает тянутся. Естественно, это поколение будет ещё плотнее связано с компьютерами («экранами», как вы назвали), роботами и т.д., но, если подход будет созидательно-творческий, вряд ли в этом будет что-то плохого. Я уверен, что на каждом этапе поколения, родители осознавали, что появляются в прогрессе вещи, большое/не правильное (ещё как-то можно назвать) потребление которых, пагубно скажется на их детях. Но, дети растут, используют эти «экраны», создают новые и т.д. И прогресс движется вперёд. Время диктует «атмосферу». Поэтому, очень многое, всё-таки, зависит именно от родителей.
Ну так про любой раздел/блог Хабра можно придраться. Только разницы нет, где знающий человек пишет.
А программирование — наиболее творческая профессия (возможно, в числе первых). И этот синтез — точных наук и созидательного творчества — наинтереснейшее дело.
Другое дело — «кодерский копи-паст», тогда, конечно, можно говорить, «вам тут не это...».
ну так и говорю — хранить в конструкторе или так же — в прототипе
да естественно, я лишь пример привел, можно хоть как подогнать под свои нужды, под синтаксис, который кажется удобным
> конструктор разнесен с методами, это тоже неудобно и некрасиво
да это мелочи всё, дописывается ещё «2-3» строками
> как вы сами заметили, нет статики
А что Вы подразумеваете под статикой?
> Собственно мой код и крутится вокруг того, чтобы обеспечить некий syntax sugar.
А я ничего против и не имею. Каждый создаёт свои обёртки, которые наиболее удобны для него. Наследование же в JS и так изначально есть, поэтому любая обёртка — есть обёртка, и является лишь синтаксическим сахаром, определяющим относительное удобство.
> Что конкретно вы считаете в нем лишним?
Да нет, лишним в подобных обёртках мало, что может быть, поскольку они относительные, и пишутся для удобства, увиденное через призму конкретных людей. Под «лишним» я больше имел в виду привязку к jQuery, но Вы уже ответили, зачем он тут.