【问题标题】:jquery .data() methodjquery .data() 方法
【发布时间】:2011-04-17 16:32:18
【问题描述】:

当我在 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);

【问题讨论】:

    标签: javascript jquery object


    【解决方案1】:

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

    如果我这样做:

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

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

    【讨论】:

      【解决方案2】:

      它将保存对它的引用。

      Javascript 对象永远不会被复制,除非你明确地复制。

      【讨论】:

      • 我认为他的问题的重点是询问 jQuery 是否进行了如此明确的复制
      • jQuery 从不复制任何东西,除非你告诉它。
      • 当然,但是记录在哪里?
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2011-06-20
        • 2011-05-27
        • 1970-01-01
        • 1970-01-01
        • 2015-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多