यह पायथन में समान है। कारण काफी सरल है: नहीं जोड़ सकता है, क्योंकि यह बाहरी क्षेत्रों में गैर-स्थानीय चर के लिए खोज करने के डिफ़ॉल्ट स्कॉइंग नियम के साथ संघर्ष करता है। सांख्यिकीय रूप से टाइप की गई भाषाओं में यह संभव है, क्योंकि this
के सदस्य संकलित समय पर ज्ञात हैं।
और क्या करता है, तो यह एक गतिशील निर्णय लिया, इस तरह के रूप में (या जो रनटाइम के दौरान निर्णय लिया गया है इस के लिए किसी भी अन्य नियम) "x
this.x
अगर this.x !== undefined
और अन्यथा चर x
करने का अर्थ है"? यह बहुत खतरनाक है, क्योंकि यह this
पर आधारित स्थानीय चर को छाया कर सकता है, यानी कुछ वस्तुओं के लिए पूरी तरह वैध कोड तोड़ना। एक और मुद्दा: undeclaredVar = ...
एक नया उदाहरण विशेषता जोड़ें? यदि नहीं, तो यह अंतर्निहित और स्पष्ट this
के बीच एक बदसूरत असमानता होगी। यदि यह एक आवृत्ति विशेषता बनाता है, तो आप अंदरूनी कार्यों से वैश्विक और बंद चर को सेट करने की क्षमता खो देंगे - बहुत अधिक नुकसान नहीं, कई लोग कहेंगे; लेकिन जेएस डिजाइनरों ने अन्यथा सोचा है, क्योंकि उन्होंने डिफ़ॉल्ट रूप से वैश्विक दायरा चुना है।
"आकस्मिक चर" बनाना छाया उदाहरण विशेषताओं को कम खतरनाक होगा, लेकिन बहुत सारे नामों से भरे घोंसले वाले घोंसले के साथ, आप संभावित रूप से this.
का उपयोग ज्यादातर मामलों में करने के लिए मजबूर होना चाहते हैं - इसलिए नेट जीत कम है। इसके लिए, और/या अन्य कारणों से, डिजाइनरों को एक शॉर्टकट अक्षम माना जाता है।
मुझे वास्तव में पता नहीं है लेकिन मैं बस पढ़ने योग्यता के लिए अनुमान लगाऊंगा। एक और यादृच्छिक अनुमान यह होगा कि यह एक व्याख्या की गई भाषा में परिवर्तनीय संकल्प में गति की चीजों की मदद कर सकता है? – madmik3
शायद यह डिज़ाइन था ताकि प्रोटोटाइप श्रृंखलाओं के बहुत से होने पर भी वैश्विक दायरे को आसानी से पहुंचा जा सके ?! – kjy112
@ kjy112: न केवल वैश्विक - प्रत्येक संलग्न क्षेत्र। बंद के साथ विशेष रूप से महत्वपूर्ण है। – delnan