Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #31 (permalink)  
Старый 04.10.2010, 22:49
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

тут вот у меня описывается ObjectHash, позволяющий в качестве ключей использовать объекты: http://javascript.ru/blog/tenshi/yavascriptovoe-dao
__________________
.ня
Ответить с цитированием
  #32 (permalink)  
Старый 04.10.2010, 23:02
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

а вообще, сабж элементарно делается так:

Object.prototype.key= function(){
return ( this.key= FProp( 0 ) ).apply( this, arguments )
}

http://github.com/sairi-na-tenshi/wc...ster//FProp.js
http://github.com/sairi-na-tenshi/wc...ster//FPoly.js
__________________
.ня

Последний раз редактировалось tenshi, 13.10.2010 в 12:35.
Ответить с цитированием
  #33 (permalink)  
Старый 13.10.2010, 06:04
Интересующийся
Отправить личное сообщение для cainrus Посмотреть профиль Найти все сообщения от cainrus
 
Регистрация: 30.09.2010
Сообщений: 13

2tenshi:
github( не могу в нём освоиться ещё.. ) не открывает ссылки, да и вообще, я мог бы давно уже воспользоваться дополнительными сторонними библиотеками или просто использовать более тяжёлые решения.

Пришла идея, добавлять через eval при создании массива функцию(например, geUid), которая будет возвращать уникальный идентификатор.
Функцию geUid хорошо бы держать внутри метода .key возвращающего ключ( [1,2,3].key() ), чтобы не захламлять внутреннее пространство объекта массива внутренне-вспомогательными методами(geUid). Тогда придется генерировать весь метод key при создании нового массива.

Понравилась идея про выделение объекта итератора из самого массива как отдельную сущность. Попробую осуществить каким-нибудь простым способом.. Эта идея избавляет меня от многих проблем описанных в топике( и посте ), а также от раздутия новыми методами объекта массива. Ну, начну играть с кодом
Ответить с цитированием
  #34 (permalink)  
Старый 13.10.2010, 12:36
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

поправил ссылки. это не библиотеки. это пара маленьких функций.
__________________
.ня
Ответить с цитированием
  #35 (permalink)  
Старый 22.10.2010, 06:10
Интересующийся
Отправить личное сообщение для cainrus Посмотреть профиль Найти все сообщения от cainrus
 
Регистрация: 30.09.2010
Сообщений: 13

Вот то что получилось в итоге:

Array.iterator.js

оформил как плагин под mootools,
если кто может посмотреть и сказать где плохо, грязно, некрасиво, криво, буду рад исправить.

демо алгоримта работы в виде галереи.
и маленькое описание.

Последний раз редактировалось cainrus, 22.10.2010 в 06:15. Причина: + доки
Ответить с цитированием
  #36 (permalink)  
Старый 22.10.2010, 13:56
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

я бы сделал next и prev алиасами для slide со значением 1 по умолчанию и вычитанием из нуля в случае prev. не хватает метода count. возможности указывать смещение для jump не только сначала массива, но и с конца (отрицательным значением). неплохо было бы иметь возможность итерироваться не по всему массиву, а только по его диапазону. например: [1,2,3,4,5].iterator( range: [ 1, -1 ] ) // будет итерировать только с 2 по 4, по умолчанию range=[ 0, 0 ] то есть итерирование по всему массиву
__________________
.ня
Ответить с цитированием
  #37 (permalink)  
Старый 22.10.2010, 14:01
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

почему ты хранишь текущий ключ не в итераторе, а в глобальном реестре?
__________________
.ня
Ответить с цитированием
  #38 (permalink)  
Старый 22.10.2010, 14:02
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

аналогично со ссылкой на массив - зачем хранить её в замыкании?
__________________
.ня
Ответить с цитированием
  #39 (permalink)  
Старый 22.10.2010, 14:06
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

зачем в slide регулярка? достаточно просто привести к типу Number
__________________
.ня
Ответить с цитированием
  #40 (permalink)  
Старый 23.10.2010, 03:20
Интересующийся
Отправить личное сообщение для cainrus Посмотреть профиль Найти все сообщения от cainrus
 
Регистрация: 30.09.2010
Сообщений: 13

tenshi,

Ссылка на массив защищена в замыкании, потому что массив рождает итератор не позволяя потомку(итератору) переопределить ссылку с себя на другой массив.
Массив может иметь несколько итераторов, а не наоборот.

Ключ храню в замыкании, потому что он всегда должен обеспечивать точные данные, которые можно было бы случайно подменить, если не скрыть его, а оставить внутри итератора как свойство объекта. Замыкание глобальное для всех итераторов, чтобы съэкономить ресурсы, если вздумается создать сотенку итераторов.

Эти 2 замыкания помогут избежать ошибок.

Диапазон итерирования был оставлен как домашнее задания для самого себя же в секции TODO скрипта))

Зачем нужен метод "count"? он ведь не относится к итерации.

Последний раз редактировалось cainrus, 23.10.2010 в 03:34. Причина: поправка
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вопр. замыкание Shaci jQuery 6 05.03.2010 12:21