2015-07-05 22 views
8

मैं डीओएम नोड्स द्वारा थोड़ा उलझन में हूं, ज्यादातर शब्दों को।"डीओएम से बाहर" तत्व क्या है?

पहले मैंने सोचा था कि डोम मैंने अपने इंस्पेक्टर में देखा था, और कुछ भी नहीं & कुछ भी कम नहीं। अब मुझे document.createElement() जैसे कार्यों के बारे में पता है जो डीओएम नोड्स बनाते हैं जिनके पास मेरा दस्तावेज़ 'संदर्भ' है, लेकिन दस्तावेज़ को 'पैरेंट' के रूप में नहीं है। document.createElement() "डोम नोड्स से बाहर" बनाते हैं?

और क्या यह शब्द गलत नहीं है? मेरी समझ के अनुसार एक "नोड" एक "डोम नोड" या "HTML तत्व" के समानार्थी है। क्या कुछ "डीओएम नोड से बाहर" कहने के लिए बुरा नामकरण नहीं है, जब नोड्स डोम में चीजें हैं? शब्द स्वयं विरोधाभासी लगता है।

आगे भ्रम को जोड़ने के लिए, वहाँ बनाए रखने पथ, अलग डोम नोड्स, डोम नोड्स फांसी की तरह नई अवधारणाओं शैडो डोम, दस्तावेज खंडों आदि

इन शर्तों में से कौन सा पर्याय बन गया है कर रहे हैं,? कौन सा गलत नामक हैं? और जो वास्तविक चश्मा हैं (चश्मे से जोड़ने के लिए बोनस)।

+1

कि नोड्स डोम में मौजूद कर सकते हैं इसका मतलब यह नहीं है कि वे करने के लिए है। ऐसा लगता है कि एक व्यक्ति एक कार में बैठ सकता है लेकिन अभी भी कार के बाहर या बस में एक व्यक्ति है। और ये सभी शर्तें पूरी तरह से Google हैं: सक्षम ('नोड' सहित)। – Jan

+0

मैं इस प्रश्न को पोस्ट करने से एक घंटे पहले गुगल रहा था। आपकी टिप्पणी अनुपयोगी है क्योंकि दस्तावेज़ों के "इन" या "आउट" में नोड्स मौजूद हो सकते हैं, जो कुछ मैं अपने प्रश्न में स्वीकार करता हूं। मैं एक विस्तृत जवाब माता-पिता और संदर्भ, नोड और तत्व, आदि ... या एक जवाब में कहा गया है कि वे इसे बैकअप लेने के लिए एक कल्पना के लिए एक लिंक का पर्याय बन गया शब्द हैं के बीच मतभेद की व्याख्या के लिए देख रहा हूँ। –

+0

मैं लग रहा है कि तुम सिर्फ एक छोटे से भी शर्तों में से कुछ पर लटका दिया हो रही है मिलता है। क्या स्ट्रीटकार को सड़क पर नहीं होने पर स्ट्रीटकार को कॉल करना बेतुका है? अस्तित्व के अपने विशिष्ट स्थान से कुछ हटाए जाने के लिए वास्तव में यह सब मुश्किल नहीं है, है ना? –

उत्तर

5

और यह शब्द "डीओएम नोड्स से बाहर" शब्द नहीं है?

नहीं। एचटीएमएल के बारे में "डीओएम" के बारे में बात करते समय सबसे पहले, यह एचटीएमएल डोम का जिक्र कर रहा है। A node can exist in the HTML DOM or not। एक नोड (जिस अर्थ में हम अभी बात कर रहे हैं) केवल सबसे छोटा आत्मनिर्भर हिस्सा है जो एक डीओएम का गठन या हो सकता है।

इस तरह, यह कहीं भी मौजूद हो सकता है और अभी भी एक नोड हो सकता है। एक इंजन अभी भी एक इंजन है यदि यह कार से अलग है। यह तब तक बहुत उपयोगी नहीं है जब तक कि इसे "दाएं" जगह में नहीं रखा जाता है।

मेरी समझ के अनुसार एक "नोड" एक "डोम नोड" या "HTML तत्व" का पर्याय बन गया है।

नोड एचटीएमएल डोम में जोड़ा जा सकता है और यह CAN be a HTML Element, लेकिन यह doesn't have to be। एचटीएमएल में, उदाहरण के लिए एक पाठ नोड भी एक नोड है। और एक HTML दस्तावेज़ या XML दस्तावेज़ या आरएसएस दस्तावेज़ में कोई नोड मौजूद हो सकता है या ...

या यह एक नोड हो सकता है जो एक HTML तत्व है लेकिन HTML DOM के बाहर मौजूद है, उदाहरण के लिए केवल स्मृति में। गतिशील रूप से नोड्स बनाते समय यह मामला क्या है।

क्या यह "डीओएम नोड से बाहर" कुछ कहने के लिए बुरा नामकरण नहीं है, जब नोड्स डोम में चीजें हैं? शब्द स्वयं विरोधाभासी लगता है।

उपर्युक्त, नहीं, यह नहीं है। एक इंजन अभी भी एक इंजन है और एक नोड अभी भी एक नोड है।

आगे भ्रम को जोड़ने के लिए, वहाँ बनाए रखने रास्तों

की तरह नई अवधारणाएं हैं, "पथ बनाए रखना" डोम, बल्कि जावास्क्रिप्ट के साथ कोई संबंध नहीं है। इसका मतलब यह है कि जब तक कि एक चर या वस्तु के संदर्भ में कहीं भी संदर्भ है, वह वस्तु कचरा नहीं है। जैसे ही सभी विधियों/कार्यों/डीओएम तत्व जो वस्तु का उपयोग कर रहे हैं वे कचरा एकत्रित होते हैं, इसलिए वस्तु भी होती है।

यह मूल रूप से केवल कचरा संग्रहण/मेमोरी लीक के बारे में है।यह केवल डीओएम से संबंधित है कि डीओएम में जो कुछ भी है वह "इस्तेमाल किया जा रहा है" और इसे बनाए रखा जाना चाहिए।

अलग डोम नोड्स, फांसी डोम नोड

और "अलग डोम नोड" "डोम नोड में से" एक ही बात होगी, और मेरा अनुमान है कि "डोम नोड फांसी" हालांकि मैं मैंने कभी नहीं सुना है कि एक इस्तेमाल किया। वे सभी नोड्स को इंगित करते हैं जो डीओएम से हटा दिए गए हैं लेकिन जावास्क्रिप्ट के माध्यम से स्मृति में अभी भी बनाए रखा गया है।

और इन अवधारणाओं नए नहीं हैं, जावास्क्रिप्ट एक looong समय के लिए यह किया गया है। अगर वे नए लगते हैं तो ऐसा इसलिए होता है क्योंकि लोग उनके बारे में और बात करते हैं।

छाया डोम, दस्तावेज खंडों, आदि

ये स्पष्ट रूप से एचटीएमएल डोम विशिष्टताओं में specced हैं। एक त्वरित जवाब यह है कि छाया डोम फिर से एक जावास्क्रिप्ट thingie है है, और यह अपने तत्वों को एक संरक्षित गुंजाइश देने के साथ ही प्रतिपादन से सामग्री को अलग करने के बारे में है। उलझन में लग रहा है? ऐसा इसलिए है क्योंकि यह अपने आप में एक बिल्कुल नया सवाल है और आपको वास्तव में इसे पढ़ना चाहिए।

कुछ लिंक आप आरंभ करने के लिए:

http://www.w3.org/DOM/
http://www.w3.org/TR/dom/
http://w3c.github.io/webcomponents/spec/shadow/
http://www.w3.org/TR/2014/REC-html5-20141028/

+0

धन्यवाद। जब आप कहते हैं कि यह "कहीं भी" अस्तित्व में हो सकता है, तो क्या स्थानों की एक निश्चित सूची है (उदाहरण के लिए, एक ऐसी जगह जेएस मेमोरी में है जो बनाए रखने वाले पथों के कारण है, जिसे मैंने पिछले कुछ महीनों में सीखा था जब कियोस्क ऐप में मेमोरी लीक डीबग करना था) । Document.createElement() पर कॉल के कारण जेएस मेमोरी में ऐसी एक और जगह है। बस सोच रहा है कि और क्या है? मैं इन चश्मा पढ़ूंगा ... और स्वीकार किए जाने के रूप में चिह्नित है क्योंकि यह मूल प्रश्न का उत्तर देता है! ठीक वही जो मेरे द्वारा खोजा जा रहा था। आपकी मूल टिप्पणी मुझे बता रही थी कि मैं ज्यामिति में चूसना चाहता हूं। यह समझाता है कि वर्ग आयताकार हैं। Thnx। –

+1

पथ बनाए रखने के पास डोम के साथ कुछ भी नहीं है, बल्कि जावास्क्रिप्ट है। इसका मतलब यह है कि जब तक कि एक चर या वस्तु के संदर्भ में कहीं भी संदर्भ है, वह वस्तु कचरा नहीं है। जैसे ही सभी विधियों/कार्यों/डीओएम तत्व जो वस्तु का उपयोग कर रहे हैं वे कचरा एकत्रित होते हैं, इसलिए वस्तु भी होती है। यह मूल रूप से सिर्फ कचरा संग्रह/मेमोरी लीक के बारे में है। यह सिर्फ डीओएम से संबंधित है कि डीओएम में जो कुछ भी है वह "इस्तेमाल किया जा रहा है"। – Jan

+0

मैं देखता हूं। लेकिन एचटीएमएल दस्तावेज़ से हटाने के बाद पथ बनाए रखने के कारण स्मृति [DOM] नोड्स स्मृति में मौजूद हैं। यह अभी भी "कहाँ" के बारे में सोचने के लिए अजीब लगता है, क्योंकि मैं उनका निरीक्षण नहीं कर सकता (ढेर स्नैपशॉट करने के अलावा)। मुझे लगता है कि मुझे बहुत सारे खुले अंत प्रश्न पूछने से पहले इन चश्मे को थोड़ा बेहतर पढ़ना चाहिए। उदाहरण के लिए आपकी टिप्पणी का अर्थ है नोड्स ऑब्जेक्ट्स हैं। इस पर आधारित मुझे शायद पढ़ना चाहिए। मुझे पता था कि नोड्स वस्तुओं में लपेटा जा सकता है, लेकिन मुझे पता नहीं था कि वे वस्तुएं हैं। अभी भी सुनिश्चित नहीं है कि हम सी ++ (ब्राउज़र इंटर्नल्स) या जेएस (उपयोगकर्तालैंड) के बारे में बात कर रहे हैं, उदाहरण के लिए। –

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