28.05.2012, 16:19
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от FINoM
|
Но это мне совсем не нравится.
|
ну а что поделать... я так и делаю, просто перебираю все свойства нужные. То есть для прототипной модели это вполне норм, ибо в любом случае нужно перебирать что бы навесить всем элементам их.
|
|
28.05.2012, 16:25
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
devote, получается, что при каждом вызове dataset нужно перебирать всё и сравнивать с атрибутами. Ах, да, еще одна проблема:
var dataset = el.dataset;
dataset.a = 1; // ← не сработает
------
Можно ли как-то известные свойства объекта коммента сделать «невидимыми» для for in в IE8?
|
|
28.05.2012, 17:33
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от FINoM
|
devote, получается, что при каждом вызове dataset нужно перебирать всё и сравнивать с атрибутами. Ах, да, еще одна проблема:
var dataset = el.dataset;
dataset.a = 1; // ← не сработает
|
Смотря у кого стоит событие, у объекта el или у объекта dataset
Сообщение от FINoM
|
------
Можно ли как-то известные свойства объекта коммента сделать «невидимыми» для for in в IE8?
|
Для некоторых можно но не для всех. Просто вызвать defineProperty с указанием enumerable: false
|
|
28.05.2012, 17:38
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
Сообщение от devote
|
Смотря у кого стоит событие, у объекта el или у объекта dataset
|
Вот именно, если dataset — html нода или коммент, в нем, очевидно, будут лишние свойства.
|
|
28.05.2012, 18:13
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
FINoM, в IE8 есть же геттеры/сеттеры, какой профит от ноды?
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
|
|
28.05.2012, 18:15
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от B~Vladi
|
FINoM, в IE8 есть же геттеры/сеттеры, какой профит от ноды?
|
профит в том что он хочет реализовать dataset, но тут обычные геттеры/сеттеры совсем не подойдут, даже в ИЕ9-10 и других браузерах. Потому как нужны магические геттеры/сеттеры которые ловить будут появление новых свойств.
|
|
28.05.2012, 18:15
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
Сообщение от B~Vladi
|
FINoM, в IE8 есть же геттеры/сеттеры, какой профит от ноды?
|
Подробнее можно? Там есть Object.defineProperty, но он работает только с элементами DOM.
|
|
28.05.2012, 18:16
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
Сообщение от devote
|
Потому как нужны магические геттеры/сеттеры которые ловить будут появление новых свойств.
|
Угу, типа propertychange.
|
|
28.05.2012, 18:24
|
|
''
|
|
Регистрация: 11.12.2011
Сообщений: 636
|
|
Сообщение от FINoM
|
но, черт возьми, там куча лишних свойств. То бишь, перебрать его обычным for...in не получится.
|
hasOwnProperty ещё никто не отменял
|
|
28.05.2012, 18:29
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
Сообщение от Раед
|
hasOwnProperty ещё никто не отменял
|
Во первых с DOM элементами оно не работает (IE8), во вторых эти элементы «имеют собственные свойства», которые попадают в for..in (Chrome).
Сообщение от devote
|
Просто вызвать defineProperty с указанием enumerable: false
|
Не работает http://jsfiddle.net/QGdqq/1/ (См. IE8)
Цитата:
|
SCRIPT5037: Для данного объекта атрибут "enumerable" дескриптора свойства не может иметь значение False
|
Последний раз редактировалось FINoM, 28.05.2012 в 18:32.
|
|
|
|