2011-10-07 11 views
7

क्या ऑटोविविफिकेशन को केवल "अपर्याप्त" अपरिभाषित संरचनाओं के साथ करना है, क्योंकि जावास्क्रिप्ट में यदि आप एक इंडेक्स या ऐसी संपत्ति निर्दिष्ट करते हैं जो मौजूद नहीं है, तो क्या यह गतिशील रूप से इसे नहीं बनाएगा? लेकिन क्या यह ऑटोविविफिकेशन नहीं है क्योंकि आपको अंतर्निहित संरचना को पहले ऑब्जेक्ट या सरणी घोषित करना होगा?ऑटोविविफिकेशन और जावास्क्रिप्ट

+1

इस प्रोग्रामिंग भाषा विशिष्ट प्रश्न है कि [programmers.se] पर अंतर्गत आता है की तरह है। – zzzzBov

उत्तर

13

नेमस्पेसिंग एक ऐसा क्षेत्र है जहां जावास्क्रिप्ट में ऑटोविविफिकेशन आसान हो सकता है। "नाम स्थान" किसी ऑब्जेक्ट को वर्तमान में, आप यह करने के लिए है:

var foo = { bar: { baz: {} } }; 
foo.bar.baz.myValue = 1; 

जावास्क्रिप्ट द्वारा समर्थित autovivification थे, पहली पंक्ति आवश्यक नहीं होगा। जावास्क्रिप्ट में ऑब्जेक्ट्स के लिए मनमानी गुणों को जोड़ने की क्षमता इसकी गतिशील भाषा होने के कारण है, लेकिन यह काफी स्वचालन नहीं है।

1

ES6 के Proxy autovivification लागू करने के लिए इस्तेमाल किया जा सकता,

var tree =() => new Proxy({}, { get: (target, name) => name in target ? target[name] : target[name] = tree() }); 

टेस्ट:

var t = tree(); 
t.bar.baz.myValue = 1; 
t.bar.baz.myValue 
संबंधित मुद्दे