jquery .data()方法

时间:2011-04-17 16:32:19

标签: javascript jquery object

当我在jQuery的数据中存储像{a: 1, b: 2 }这样的对象时,它是复制对象还是保存对它的引用?

我有一个庞大的对象,我想要不同的元素来存储从不同点到同一个对象的不同引用,我不希望它被复制。

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 个答案:

答案 0 :(得分:5)

根据my jsfiddle test,它存储了一个引用。

如果我这样做:

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

警告“bleuch”,表示正在存储对原始对象的引用。

答案 1 :(得分:2)

它将保存对它的引用。

永远不会复制Javascript对象,除非您明确复制。

答案 2 :(得分:0)

来自http://api.jquery.com/data/

“数据属性在第一次访问数据属性时被拉出,然后不再被访问或变异(然后所有数据值都在内部存储在jQuery中)。”