2011-04-17 14 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

की तरह यह यह करने के लिए एक संदर्भ बचत होगी।

जावास्क्रिप्ट वस्तुओं की नकल की कभी नहीं कर रहे हैं, जब तक आप स्पष्ट एक प्रतिलिपि बनाने।

+0

मुझे लगता है कि उनके प्रश्न का बिंदु यह पूछना था कि jQuery ऐसी स्पष्ट प्रतिलिपि बनाता है – Alnitak

+0

jQuery जब तक आप इसे नहीं बताते तब तक चीजों की प्रतिलिपि नहीं बनाते। – SLaks

+3

यकीन है, लेकिन यह कहां दस्तावेज है? – Alnitak

0

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

से "डेटा- विशेषताओं पहली बार में खींच रहे हैं डेटा संपत्ति एक्सेस किया जाता है और उसके बाद नहीं रह पहुँचा या उत्परिवर्तित कर रहे हैं (सभी डेटा मानों तो jQuery में आंतरिक रूप से जमा हो जाती है)।"

संबंधित मुद्दे