Метод jquery .data () - PullRequest
       1

Метод jquery .data ()

8 голосов
/ 17 апреля 2011

Когда я сохраняю объект типа {a: 1, b: 2 } в данных jQuery, копирует ли он объект или сохраняет ссылку на него?

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

Как

var obj = { 
    a: {
        one: 1, two: 2
    },
    b: {
        apple: 'yummy', banana: 'ehh'
    }
    c: {
        d: {
            'jQuery': jQuery
        }
        e: ['You get the point']
    }
};

$('div').data('info', obj.b);
$('#JQ').data('jq_reference', obj.c.d.jQuery);

Ответы [ 3 ]

5 голосов
/ 17 апреля 2011

Согласно моему тесту jsfiddle , он хранит ссылку.

Если я сделаю это:

$('div').data('info', obj.b);
obj.b.apple = 'bleuch';
alert($('div').data('info').apple);

Он предупреждает "bleuch", показывая, что ссылкак исходному объекту сохраняется.

2 голосов
/ 17 апреля 2011

Сохранит ссылку на него.

Объекты Javascript никогда не копируются, если вы явно не делаете копию.

0 голосов
/ 17 апреля 2011

С http://api.jquery.com/data/

"Атрибуты данных извлекаются при первом обращении к свойству данных, а затем к ним больше не обращаются и не изменяются (все значения данных затем сохраняются внутри в jQuery)."

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...