2015-05-12 6 views
6

यह एक मूर्ख सवाल हो सकता है लेकिन मुझे इसका जवाब नहीं मिला है। हम निम्नलिखित क्यों नहीं कर सकते?विंडो या दस्तावेज़ को अपरिभाषित या शून्य पर क्यों सेट नहीं किया जा सकता है?

window = undefined 

या

document = undefined 

मैं जानता हूँ कि उन वैश्विक हैं और ब्राउज़र में उपलब्ध हैं, लेकिन कैसे जावास्क्रिप्ट काम करता है के बारे में सोच, यह संभव नहीं है? क्या हर बार जब हम उन्हें एक्सेस करने का प्रयास करते हैं तो फिर से उनका मूल्यांकन किया जाता है?

मैं भी जानते हुए भी कैसे window या document वस्तुओं रहने के क्या वे उन्हें एक यादृच्छिक मूल्य के लिए सेटिंग के बाद भी कर रहे हैं में दिलचस्पी है ... एक number या undefined या null हो सकता है।

+0

मैं इसके बारे में कभी नहीं सोचा था, मुझे लगता है कि दुभाषिया बस इन वस्तुओं के लिए मान निर्दिष्ट की अनुमति नहीं देता मान चाहते हैं। – dave

+0

विंडो निष्पादन जावास्क्रिप्ट का CONTEXT है और इसका कार्यान्वयन ब्राउज़र विक्रेता द्वारा परिभाषित किया गया है, आपको मोज़िला देवों से पूछना चाहिए। दस्तावेज डोम ऑब्जेक्ट है तो अनुमान लगाएं कि –

+0

मैं सहमत हूं लेकिन यह एक कठिन लगाए गए प्रतिबंध की तरह लगता है जो दस्तावेज नहीं है (या शायद यह है लेकिन मुझे नहीं पता।) प्रभाव तब भी रहता है जब मैं एक चर के साथ घोषित करता हूं एक ही नाम उदा 'var दस्तावेज़ '। यदि ये किसी भी तरह से आरक्षित हैं, तो दुभाषिया को त्रुटियों को फेंकना चाहिए। –

उत्तर

4

the standard के अनुसार:

खिड़की विशेषता Window वस्तु के ब्राउज़िंग संदर्भ के WindowProxy वस्तु लौट जाना चाहिए। दस्तावेज़ विशेषता Window ऑब्जेक्ट की नवीनतम Document ऑब्जेक्ट को वापस करनी होगी।

अर्थ window वह संदर्भ है जिसमें आपकी सभी स्क्रिप्ट का मूल्यांकन किया जाता है। यदि यह लिखने योग्य था तो उपर्युक्त नहीं होगा और कार्यान्वयन spec का पालन नहीं करेगा, इसलिए यह लिखने योग्य नहीं है।
इसी कारण से आप document पर गुण जोड़ सकते हैं लेकिन आप इसे ओवरराइड नहीं कर सकते हैं।

आप आईडीएल को देखकर यह सत्यापित कर सकते हैं:

[Unforgeable] readonly attribute WindowProxy window; 
[Unforgeable] readonly attribute Document document; 
+0

'दस्तावेज़' के बारे में कैसे? संपादित करने के बाद –

+0

- इसलिए इसे कंसोल में त्रुटियों को फेंकने से आपको दंडित नहीं करना चाहिए .. "यह ब्राउज़र आपको यह सब बम नहीं देगा .." या कुछ इसी तरह। –

+1

@TheWarlock मैं अपने सिर के शीर्ष को याद नहीं कर सकता अगर spec परिभाषित करता है कि पाठ पढ़ने के लिए लिखना चुपचाप विफल होना चाहिए या नहीं। – Nit

0

window संदर्भ है। आप this = something और नहीं कर सकते हैं। document खिड़की की संपत्ति है। यह लिखने योग्य या विन्यास योग्य नहीं है।

Object.getOwnPropertyDescriptor(window, 'document'); 

उत्पादन

Object {value: document, 
    writable: false, 
    enumerable: true, 
    configurable: false} 
+0

ओपी नहीं है, यह 'यह = कुछ' नहीं करेगा, लेकिन' window = something'। – Bergi

+0

ब्राउज़र विंडो के संदर्भ में यह वही – webduvet

+1

हां है, वैश्विक दायरे में 'विंडो' और 'यह' एक ही ऑब्जेक्ट को संदर्भित करता है। लेकिन वे वही काम नहीं करते हैं, और 'यह' असाइन करने योग्य नहीं है जिसका मतलब 'विंडो' चर के लिए कुछ भी नहीं है। – Bergi

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

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