Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   spike - библиотека внедряет W3C-шные методы в IE (https://javascript.ru/forum/project/27728-spike-biblioteka-vnedryaet-w3c-shnye-metody-v-ie.html)

devote 28.05.2012 16:19

Цитата:

Сообщение от FINoM
Но это мне совсем не нравится.

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

FINoM 28.05.2012 16:25

devote, получается, что при каждом вызове dataset нужно перебирать всё и сравнивать с атрибутами. Ах, да, еще одна проблема:
var dataset = el.dataset;
dataset.a = 1; // ← не сработает

------
Можно ли как-то известные свойства объекта коммента сделать «невидимыми» для for in в IE8?

devote 28.05.2012 17:33

Цитата:

Сообщение от FINoM (Сообщение 177158)
devote, получается, что при каждом вызове dataset нужно перебирать всё и сравнивать с атрибутами. Ах, да, еще одна проблема:
var dataset = el.dataset;
dataset.a = 1; // ← не сработает

Смотря у кого стоит событие, у объекта el или у объекта dataset
Цитата:

Сообщение от FINoM (Сообщение 177158)
------
Можно ли как-то известные свойства объекта коммента сделать «невидимыми» для for in в IE8?

Для некоторых можно но не для всех. Просто вызвать defineProperty с указанием enumerable: false

FINoM 28.05.2012 17:38

Цитата:

Сообщение от devote
Смотря у кого стоит событие, у объекта el или у объекта dataset

Вот именно, если dataset — html нода или коммент, в нем, очевидно, будут лишние свойства.

B~Vladi 28.05.2012 18:13

FINoM, в IE8 есть же геттеры/сеттеры, какой профит от ноды?

devote 28.05.2012 18:15

Цитата:

Сообщение от B~Vladi
FINoM, в IE8 есть же геттеры/сеттеры, какой профит от ноды?

профит в том что он хочет реализовать dataset, но тут обычные геттеры/сеттеры совсем не подойдут, даже в ИЕ9-10 и других браузерах. Потому как нужны магические геттеры/сеттеры которые ловить будут появление новых свойств.

FINoM 28.05.2012 18:15

Цитата:

Сообщение от B~Vladi
FINoM, в IE8 есть же геттеры/сеттеры, какой профит от ноды?

Подробнее можно? Там есть Object.defineProperty, но он работает только с элементами DOM.

FINoM 28.05.2012 18:16

Цитата:

Сообщение от devote
Потому как нужны магические геттеры/сеттеры которые ловить будут появление новых свойств.

Угу, типа propertychange.

Раед 28.05.2012 18:24

Цитата:

Сообщение от FINoM
но, черт возьми, там куча лишних свойств. То бишь, перебрать его обычным for...in не получится.

hasOwnProperty ещё никто не отменял

FINoM 28.05.2012 18:29

Цитата:

Сообщение от Раед
hasOwnProperty ещё никто не отменял

Во первых с DOM элементами оно не работает (IE8), во вторых эти элементы «имеют собственные свойства», которые попадают в for..in (Chrome).
Цитата:

Сообщение от devote
Просто вызвать defineProperty с указанием enumerable: false

Не работает http://jsfiddle.net/QGdqq/1/ (См. IE8)

Цитата:

SCRIPT5037: Для данного объекта атрибут "enumerable" дескриптора свойства не может иметь значение False


Часовой пояс GMT +3, время: 20:58.