![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| Иль |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 544 Регистрация: 3.3.2005 Где: Москва Репутация: 2 Всего: 14 |
Можно свойству пользовательского объекта изменить атрибут DontEnum, чтоб оно не перечислялось в for…in.
Если нет, то кто чем пользуется? Это сообщение отредактировал(а) Иль - 20.4.2005, 09:39 -------------------- Ты виндусятник?... А я да. |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 55 Всего: 137 |
А что это такое? Впервые слышу.
MSDN вообще только 1 страницу на такое выдал = и-то связанную с JScript... Опиши суть... |
|||
|
||||
| Иль |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 544 Регистрация: 3.3.2005 Где: Москва Репутация: 2 Всего: 14 |
О, Aliance, я ж у тебя этому научился. Я про for…in. Помню помню
но попозже, как всегда в запарках, но ничего не упущу.
Вот тут правильно: http://wdh.suncloud.ru/js07.htm В верху страницы, смотреть про
А тут по моему Вот создаем мы пользовательский объект var Ilya={}; наделяем его там всякими свойствами, там методами, а потом вдруг взбрело нам в голову (а ведь точно взбредет) в for…in перебрать его свойства, но поскольку методы это тоже свойства и у тех и у других DontEnum имеет значение false, методы неприятным образом попадают в перечисление. Чтоб этого не было я пока использую замеченную у Sardar "typeof"
Ведь свойства у нас всегда будут "object", а методы "function" Это сообщение отредактировал(а) Иль - 20.4.2005, 13:36 -------------------- Ты виндусятник?... А я да. |
||||||||
|
|||||||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
typeof - есть пока единственное правильное решение. DontEnum это фича ИЕ, мозилле и другим по барабану.
-------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Иль |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 544 Регистрация: 3.3.2005 Где: Москва Репутация: 2 Всего: 14 |
Мона еще переводить в строки значения свойств и тестить их. И не говорите, что изврат, все может пригодиться
-------------------- Ты виндусятник?... А я да. |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 55 Всего: 137 |
А зачем это нам взбредет? |
|||
|
||||
| Иль |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 544 Регистрация: 3.3.2005 Где: Москва Репутация: 2 Всего: 14 |
Затрудняюсь ответить. Но мне требуется.
А, вот, например, при реализации ассоциативного массива со своими спицифическими методами. -------------------- Ты виндусятник?... А я да. |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
К сожалению не кривых ассоциативных массивов в JS нет(в JScript есть словарь
Простая реализация за 5 минут:
Длинна (len) это приватное поле, не доступное извне. Оно лежит в контексте конструктора, потому методы что его используют тоже обьявленны в конструкторе. Технически на каждый обьект создаётся своя копия метода, что хавает чуть больше памяти. Практически нам на это по барабану -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Иль |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 544 Регистрация: 3.3.2005 Где: Москва Репутация: 2 Всего: 14 |
Тема плавно перетекла под название - ассоциативный массив, for ... in и префиксы
А я использую подъобекты с именем=имя и с двумя параметрами: имя и значение. Для экономии имя тоже несет информацию о дате или к-либо параметрах и приходится по значению имя доставать. Хотя конечно можно все засунуть в префикс у значения и удалять каждый раз, но я не люблю лишний раз использовать текстовые операции / методы. -------------------- Ты виндусятник?... А я да. |
|||
|
||||
| Sardar |
|
||||||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Скорее всего я не понял что ты сказал, т.к. идея промелькнувшая в голове есть чудовищный изврат(нести в имени обьекта некоторую инфу о его состоянии)...
Правильная политика для не скриптовых языков, скриптовые всегда активно используют сторки/списки/таблицы
Я ответил в первом посте. Что то не ясно или появились другие проблемы? Выкладывай, решим. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
||||||
|
|||||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 55 Всего: 137 |
Нарыл кое что, может пригодится: http://www.quirksmode.org/js/associative.html |
|||
|
||||
| Иль |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 544 Регистрация: 3.3.2005 Где: Москва Репутация: 2 Всего: 14 |
Может не то сказал, не будем развивать. Я доволен моим извратом и не вижу решения оптимальнее. -------------------- Ты виндусятник?... А я да. |
||||
|
|||||
| Иль |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 544 Регистрация: 3.3.2005 Где: Москва Репутация: 2 Всего: 14 |
Вопрос про изврат:
в параметр функци передаются объект, который может быть и подобъектом (соответственно window[...] не пойдет, тк заранее не известно глобальный будет объект или нет) Как из функции обратится к узлу с id=имя объекта
Это сообщение отредактировал(а) Sardar - 28.4.2005, 23:17 -------------------- Ты виндусятник?... А я да. |
||||
|
|||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 55 Всего: 137 |
Кстати, есть метод, проверяющий, унаследовано ли свойство объекта - object.hasOwnProperty():
|
|||
|
||||
| Иль |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 544 Регистрация: 3.3.2005 Где: Москва Репутация: 2 Всего: 14 |
не пойдет. Конечно можно вообще не навязывать пользовательскому объекту своих методов, но на практике надо создавать как минимум метод реализующий свойству .length (у прототипа x=new objeckt его нет), а он покажет true и вылезет в for ... in.
-------------------- Ты виндусятник?... А я да. |
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |