Комментарии: js-core reloaded http://www.codeisart.ru/js-core-reloaded/ Статьи по SEO, дизайну и программированию. Переводы на веб-тематику. Исследования и наработки в области интернет-технологий. Mon, 14 Jul 2014 11:15:57 +0000 hourly 1 http://wordpress.org/?v=3.5.1 Автор: Denis Usenko http://www.codeisart.ru/js-core-reloaded/comment-page-1/#comment-3908 Denis Usenko Fri, 13 Feb 2009 10:20:42 +0000 http://www.codeisart.ru/?p=1059#comment-3908 Да действительно, почему-то сразу не понял )) На первый взгляд мне показалось что надежнее было бы что то вроде «!(this instanceof core)». Но на второй все встало на свои места, спасибо за развернутый ответ ))

]]>
Автор: Octane http://www.codeisart.ru/js-core-reloaded/comment-page-1/#comment-3850 Octane Thu, 12 Feb 2009 10:20:53 +0000 http://www.codeisart.ru/?p=1059#comment-3850 Контекст выполнения и область видимости разные вещи. Глобальные функции и методы других объектов не меняют свой контекст выполнения при явном вызове. Это легко проверить, создадим объект:

var obj = {
    name: 'obj',
    method: function() {
        // this → obj
        alert(this.name);
    }
};

Теперь в каком бы месте мы не вызвали obj.method();, всегда будет выводится сообщение «obj».

Методы core и $ объекта window — ссылки, указывающие на один и тот же объект. При явном вызове core(…) или $(…) в любом месте кода, сохраняют контекст (this → window), т. к. эти записи эквивалентны window.core(…) или window.$(…).

Проверка if(this.core) return new core(arg); была введена для сокращения записи конструктора, чтобы не писать каждый раз new core(…) или new $(…). Такая рекурсия хоть и несуществнно, но снижает производительность, поэтому внутри core и при написании расширений для js-core лучше использовать постоянную ссылку core и создание новго объекта с помощью new core(…).

]]>
Автор: Denis Usenko http://www.codeisart.ru/js-core-reloaded/comment-page-1/#comment-3835 Denis Usenko Thu, 12 Feb 2009 01:12:54 +0000 http://www.codeisart.ru/?p=1059#comment-3835 Продложаю потихоньку просматривать код, возник вопрос. Проверка «this.core» в конструкторе core:
if(this.core) return new core(arg);
это «если в контексте window то вернуть новый экземпляр core» ? Если так, то что будет если долларом воспользоваться в конструкторе какого либо объекта?

]]>
Автор: Octane http://www.codeisart.ru/js-core-reloaded/comment-page-1/#comment-3414 Octane Sun, 01 Feb 2009 17:29:37 +0000 http://www.codeisart.ru/?p=1059#comment-3414 Блин про removeClass и toggleClass совсем забыл, в следующей версии 2.7.4 и там исправлю поиск с использованием \b.

]]>
Автор: Octane http://www.codeisart.ru/js-core-reloaded/comment-page-1/#comment-3404 Octane Sun, 01 Feb 2009 12:38:03 +0000 http://www.codeisart.ru/?p=1059#comment-3404 Спасибо большое за отзыв и багрепорт :)

Поиск по границе слов уже исправлен в версии 2.7.3

В старых версиях использовался, где это было возможно, нативный forEach, но в процессе оптимизации от него пришлось отказаться, т.к. он не позволяет сделать break. Кстати если почитать описание forEach в MDC, там в комментариях есть предложения добавить эту возможность, но видимо уже поздно что-то менять. Хотя в последних версиях я все больше отказываюсь от дополнительных анонимных функций, возникающих при использовании подобных методов в пользу обычного while, из-за скорости работы в IE.

Скорее всего нативный forEach и его реализация для старых браузеров появится в составе расширения js-core для работы с массивами, а так же всякие indexOf, some, map, unique и др. для Array.

Более свежая версия документации доступна на сайте js-core.ru и в архиве на странице проекта в сервисе Google Code.

]]>
Автор: Denis Usenko http://www.codeisart.ru/js-core-reloaded/comment-page-1/#comment-3390 Denis Usenko Sat, 31 Jan 2009 22:25:49 +0000 http://www.codeisart.ru/?p=1059#comment-3390 Багрепорт маленький.
Сначала отсылка к w3c:
4. Синтаксис CSS2 и базовые типы данных.
4.1.3 Символы и регистр
http://www.w3.org/TR/1998/REC-CSS2-19980512/syndata.html#q4
http://www.umade.ru/resources/specifications/CSS2/syndata.html#q4
Цитата:
In CSS2, identifiers (including element names, classes, and IDs in selectors) can contain only the characters [A-Za-z0-9] and ISO 10646 characters 161 and higher, plus the hyphen (-); they cannot start with a hyphen or a digit.

Отсюда — нельзя искать класс таким регэкспом: /\bSomeString\b/ (это в функе inStr)
Например на странице есть код:

id ="d1" class="some-class"

теперь спросим:

$('d1').hasClass('some')

ответит true
Здесь вообще не нужны регулярки:

(' ' + element.className + ' ').indexOf(' ' + someClass + ' ') >= 0

В целом либа понравилась, меня убивает, например, что джиквери обильно обвешивает HTMLElement’ы на ходу (и без оптимизации для нормальных браузеров с HTMLElement, как это сделано в последних прототайпах). Здесь же это аккуратнее, покольку элемент лежит в свойстве node. Здорово так же, что почти ничего лишнего нет, так и держитесь этого подхода.

Я не совсем уверен, может это противоречит идее либы, но. Почему forEach для всех рукотворный? Может восполнить его в Array.prototype для мсие (а также map, filter, indexOf, lastIndexOf, every, some. Во всех остальных все это уже есть) и использовать уже готовый в core.forEach?

]]>
Автор: seoengineer http://www.codeisart.ru/js-core-reloaded/comment-page-1/#comment-3149 seoengineer Sat, 24 Jan 2009 21:19:02 +0000 http://www.codeisart.ru/?p=1059#comment-3149 отличная работа

]]>
Автор: RSmichyk http://www.codeisart.ru/js-core-reloaded/comment-page-1/#comment-2717 RSmichyk Fri, 09 Jan 2009 13:57:47 +0000 http://www.codeisart.ru/?p=1059#comment-2717 Класна стаття

]]>
Автор: Octane http://www.codeisart.ru/js-core-reloaded/comment-page-1/#comment-2704 Octane Thu, 08 Jan 2009 12:11:05 +0000 http://www.codeisart.ru/?p=1059#comment-2704 Артём Курапов, нет функция «$(…)» не аналогична одноименным функциям в jQuery и Prototype.

В jQuery эта функция может принимать CSS-селекторы вместе с контекстом поиска, прямые ссылки на элементы, функции, запускаемые по событию DOMContentLoaded, может и еще что-то упустил… в общем это сложная и универсальная функция.

В Prototype функция «$(…)» ищет элементы по идентификатору и возвращает прямые ссылки на DOM-узлы, которые проходят обработку Element.extend(element).

В js-core функция «$(…)» служит для поиска элемента по идентификатору и возвращает объект вида {node: HTMLElement}, а через прототип его функции-конструктора, становится доступен набор методов для работы с DOM, CSS, AJAX и событиями.

В чем вы считаете не удачность ее реализации?

Sam, спасибо, поправлю :) а до монстров постараюсь не доводить, все таки хочется сохранить легкость и быстродействие, иначе зачем еще один «монстрофреймворк»

]]>
Автор: Sam http://www.codeisart.ru/js-core-reloaded/comment-page-1/#comment-2703 Sam Thu, 08 Jan 2009 10:59:08 +0000 http://www.codeisart.ru/?p=1059#comment-2703 Догоняем монстров потихоньку…

// ‘conteiner’ очень глаз режет. Может ‘container’?

]]>
Автор: Артём Курапов http://www.codeisart.ru/js-core-reloaded/comment-page-1/#comment-2700 Артём Курапов Thu, 08 Jan 2009 08:43:54 +0000 http://www.codeisart.ru/?p=1059#comment-2700 Может я глупость скажу, но разве вы не знакомы с jquery или prototype? Потому что судя по описанию эта $ функция прям аналог той что в prototype, и я бы не сказал что самая удачная.

]]>