2011-04-17 51 views
8

當我在jQuery的數據中存儲像{a: 1, b: 2 }這樣的對象時,它是複製對象還是保存對它的引用?jquery .data()方法

我有一個巨大的物體,我想不同的元素,從不同位置有不同的引用存儲到同一個對象,我不希望它被複制。

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); 

回答

5

根據my jsfiddle test,它存儲一個引用。

如果我這樣做:

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

它會提醒「bleuch」,顯示出對原始對象的引用被存儲。

1

這將節省對它的引用。

除非您明確地製作副本,否則不會複製Javascript對象。

+0

我認爲他的問題的重點是詢問jQuery是否製作了這樣一個明確的副本 – Alnitak 2011-04-17 16:36:30

+0

除非您告訴它,否則jQuery從不復制內容。 – SLaks 2011-04-17 16:43:24

+3

當然,但記錄在哪裏? – Alnitak 2011-04-17 16:45:00

0

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

「Data-用屬性被拉到在第一時間中的數據屬性被訪問,然後不再訪問或突變的(所有數據值然後被存儲在內部的jQuery)」。