फ़ायरफ़ॉक्स 21.0 में क्यों एक प्रकार त्रुटि डालते हैं?
Object.defineProperty (विंडो , 'WindowProperty', {get: function () {return 'windowProperty'}, सेट करें: फ़ंक्शन (val) {console.log ('windowProperty सेट किया जा रहा है');}, कॉन्फ़िगर करने योग्य: true,}); Var विंडोप्रॉपर्टी; लेकिन वर्क कार्यों का उपयोग किए बिना खिड़की प्रॉपर्टी को घोषित करना:
windowProperty; या
window.windowProperty; यह व्यवहार spidermonkey में भी मौजूद है:
var a = 1; Object.defineProperty (यह, 'ए', {get: function ()} रिटर्न 'ए';},});
केवल लेखन
windowProperty; कोई चर घोषित नहीं करता है यह केवल निकटतम संदर्भ या अपरिभाषित में वैरिएबल सामग्री को वापस करने का प्रयास करता है अगर यह नहीं पाया जा सकता है यह लक्ष्य के बिना एक असाइनमेंट जैसा है। उदाहरण के लिए, आप एक त्रुटि फेंके बिना यादृच्छिक पाठ भी लिख सकते हैं: 'हैलो, दुनिया!'; 123456; अपरिभाषित; var का उपयोग करने के बजाय एक प्रॉपर्टी को फिर से परिभाषित करने का प्रयास करें जो आपके कोड में पहले से परिभाषित है, इसलिए आपको एक त्रुटि है।
संपादित करें < Br> सिमोनज़ैक द्वारा सटीक रूप से, ब्राउज़र एक चर को फिर से परिभाषित करते समय एक त्रुटि भेजता है। उदाहरण के लिए: var परीक्षण; Var परीक्षण; इस त्रुटि को नहीं फेंकता (भले ही यह एक बुरा विचार है और कुछ जेएस वैधीकरण आपको चेतावनी देगा)। निश्चित गेटर्स और सेटर्स द्वारा, हालांकि, इस संपत्ति को ब्राउज़र 'ताले' (टकराव को रोकने के लिए, उसी संपत्ति पर दो अलग-अलग सेटर्स के लिए)। मेरा बुरा, यह एक गलत व्याख्या है। > क्या आप अपनी वैरिएबल को फिर से परिभाषित करना चाहते हैं, इसके लिए कोई कारण है?
2 संपादित करें
खाते में लेना है कि var घोषणापत्र < कोड> परिभाषित , यह मेरे स्पष्टीकरण पर सटीकता को जोड़ने की अनुमति देता है दरअसल, जब आप पहली बार var घोषणा का उपयोग करते हैं, तो ब्राउज़र ने इसके कॉन्फ़िगर करने योग्य स्थिति को झूठा बना दिया है, जो इसके विवरणकर्ता पर परिवर्तन करने से रोकता है () इसलिए जब आप इसे defineProperty फ़ंक्शन के साथ बदलने का प्रयास करते हैं, तो यह एक त्रुटि का कारण बनता है बेहतर देखने के लिए एक कोड को क्लोजर फ़ंक्शन में कोड लपेट करना होगा। इस तरह से var द्वारा परिभाषित खिड़की प्रॉपर्टी वही नहीं है और सब कुछ ठीक है। (function () {var windowProperty; Object.defineProperty (...) ; // यह काम करता है क्योंकि पहले से परिभाषित वेरिएबल फ़ंक्शन के दायरे में है और इस प्रकार यह विंडो के समान नहीं है। विन्डोप्रॉपर्टी।)} ();
No comments:
Post a Comment