хорошо, я хочу создать диалоговое окно с помощью jquery.dialog. Для этого мне нужно передать в качестве первого и единственного параметра набор опций, у каждой есть имя и значение, т.е. набор пар ключ-значение, т.е. ассоциативный массив. Для этого мне нужно знать названия опций и какие значения они могут принимать. К чему мне здесь прототипы и то, что в качестве ключа можно использовать функцию? Зачем мне лишние детали?
|
В качестве ключа использовать функцию? Это как?
|
функция - тип данных? в строку преобразовать можно? Вот вам и ключ
Цитата:
|
т.е. дело не в том, что в строку преобразовать можно, а в том, что "ключом в хеше может быть все, что угодно"
|
x-yuri,
разные функции могут давать одинаковый хеш. |
замечательно, меня это не интересует, не представляю задачи, в которой это может понадобится
это Dmitry A. Soshnikov про функции в качестве ключей упомянул, так что все такие вопросы - к нему т.е. речь о том, стоит ли строго придерживаться терминологии или стоит избегать лишних деталей (краткость сестра таланта) ;-) |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Чтобы подытожить, небольшая памятка по терминологии и основным принципам: 1. в JS есть объекты и примитивы; 2. примитивы при выполнении специфических операций преобразуются в объекты; 3. исходя из 2) можно образно говорить, что "все в JS - объекты", однако, помнить, первые два пункта и знать, что пункт 3) - образный. 4. любой объект-контейнер может быть назван ассоциативным, поскольку может содержать пары "ключ => значение" 5. помнить, что ввиду делегирующей прототипной модели - ассоциация не точная, поэтому пункты 4 и 5 вообще употреблять не нужно :) (Хотя, тогда и в Питоне надо идти спрашивать, почему dict обособили от остальных объектов; там, как уже было показано, та же неоднозначность). 6. объекты, конкретно порожденные от конструкций Object, new __конструктор__ и {} (где __конструктор__ - объект-функция) принято (и согласно терминологии ECMA) называть объектами 7. объекты, порожденные от конструкций Array и [] принято (и согласно терминологии ECMA) называть массивами 8. объекты, порожденные от конструкций function и Function принято (и согласно терминологии ECMA) называть функциями или методами 10. согласно пункту 3), пункты 6), 7) и 8) можно называть объектами; это тоже будет верно, но уже будет более теоретический уклон, поскольку, обычно, в соответствующих местах, употребляются понятия из 6), 7) и 8) 11. если разговор не теоретический, а прикладной, никто не съест, если {} будет назван "ассоциативным массивом" / "хэшем" (или еще чем-то, услышанным в альтернативной технологии). Главное, опять, помнить и знать, - с таким успехом, все объекты являются "ассоциативными" и идеология в JS иная. Поэтому, чтобы "избежать лишних деталей", - лучше использовать лаконичную терминологию JS. 12. "Ассоциативный массив", "Разреженный массив", "Хэш-таблица" и т.д. - теоретические абстрактные понятия и структуры, стоящие выше конкретных технологий (JS, Python, Ruby, PHP и т.д.), поэтому однозначное использование этих определений - применительно к конкретным технологиям - размыто и не позволяет дать точную оценку. |
Цитата:
|
Цитата:
Цитата:
|
Цитата:
Цитата:
кстати, наткнулся недавно на статью http://www.quirksmode.org/js/associative.html (Objects as associative arrays), известный такой сайт |
Часовой пояс GMT +3, время: 21:49. |