Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Данные в свойствах обьектов ДОМ (https://javascript.ru/forum/misc/38937-dannye-v-svojjstvakh-obektov-dom.html)

PashPP 09.06.2013 01:18

Данные в свойствах обьектов ДОМ
 
Не помню, спрашивал ли.
Нормально ли хранить данные, обьекты в обьектах ДОмика?
document.getElementById().blabla = blabla;

Если да, то зачем тогда все эти data-

nerv_ 09.06.2013 02:51

нормально, храни

Цитата:

Сообщение от PashPP
Если да, то зачем тогда все эти data-

data- - атрибут, а то свойство. Андестенд? :)

PashPP 09.06.2013 03:14

nerv_,
ОК, и как это различие использовать?

dmitriymar 09.06.2013 13:21

Цитата:

Сообщение от PashPP
Нормально ли хранить данные, обьекты в обьектах ДОмика?
document.getElementById().blabla = blabla;

Цитата:

Сообщение от PashPP
ОК, и как это различие использовать?

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

Свойсnва HTML-Elemrnt:
Скрипт нужно запускать , чтоб взять из хранилища, записать их в элемент, а затем получать из элемента.

Записать , чтоб получить в то время как они в хранилище есть?- 2 лишних шага .

Работа с Dom быстра? -нет, одна из самых медленных операций.

Вывод: абсолютно не нормально.

melky 09.06.2013 16:23

Цитата:

Сообщение от dmitriymar
Работа с Dom быстра? -нет, одна из самых медленных операций.

обычно DOM во всех операциях стараются как можно меньше задействовать

а тут его ещё и заместо быстрых объектов юзают) ужас.

PashPP 09.06.2013 23:04

Свойства обьекта домика по скорости на равне с обычным объектом. Дата медленее раз в 40.

var numb = 100000;
var doms = [];
var objcts = [];
for(var i = 0; i < numb; i++){
    var tempDom = document.createElement('div');
    tempDom.targ = "target" + i;
    tempDom.dataset.targ= 'target' + i;
    //document.body.appendChild(tempDom);
    doms[doms.length] = tempDom;

    var tempObj = { targ : "target" + i}; 
    objcts[objcts.length] = tempObj;
};
var all = [[],[],[]];
var a = Date.now(); 
for(var i = 0; i < numb; i++){
    var t = doms[i].targ;
    //all[0][all[0].length] = t;
};
a = Date.now()- a;

var b = Date.now()
for(var i = 0; i < numb; i++){
    var t = doms[i].dataset.targ;
    //all[1][all[1].length] = t;
}
b = Date.now()- b;

var c = Date.now();
for(var i = 0; i < numb; i++){
    var t = objcts[i].targ;
    //all[2][all[2].length] = t;
}
c = Date.now() - c;

alert("Свойство домика " + a + "  Дата домика " + b +"  Свойство объекта " + c)


Зачем дата - чтоб до загрузки страницы без скриптов иметь значение? Верно, это все?

Скорость и в объектах дом хорошая, если не находить их в хтмл каждый раз, конечно.
Так какие еще подводные камни?

danik.js 09.06.2013 23:57

Цитата:

Сообщение от PashPP
Дата медленее раз в 40

Оно и понятно. Ведь создается нода-атрибут для каждого свойства dataset

nerv_ 10.06.2013 01:54

Цитата:

Сообщение от PashPP
Если да, то зачем тогда все эти data-

по селектору выбирать

http://learn.javascript.ru/attribute...tom-properties


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