2015-02-19 4 views
6

एक जावास्क्रिप्ट डीबगर में, मैं मैन्युअल रूप से scope chain फ़ंक्शन के निरीक्षण कर सकता हूं। उदाहरण के लिए, जब कोड के इस टुकड़े पर foo() क्रियान्वित:जावास्क्रिप्ट स्कोप श्रृंखला का प्रोग्रामेटिक रूप से निरीक्षण कैसे करें?

Scope Variables seen in Chrome Debugger

वहाँ कुछ साधन इस क्या करना है:

var x1 = "global"; 
var foo = (function main() { 
    var x2 = "inside obj"; 
    return function internalFoo() { 
     var x3 = "inside internalFoo"; 
     console.log (x1+','+x2+','+x3); // get the scopes 
    }; 
})(); 
foo(); 

और console.log पर एक ब्रेकपाइंट की स्थापना, मैं निम्नलिखित स्कोप देख प्रोग्रामेटिक?
मैं प्रत्येक स्कोप स्तर पर परिभाषित किए गए कार्यों का निरीक्षण कैसे कर सकता हूं?

उत्तर

5

मैं (सुंदर) यकीन है कि यह संभव नहीं है।
क्रोम-डीबगर भी आपके गुंजाइश का ट्रैक नहीं रखता है, लेकिन केवल तभी जब यह ब्रेकपॉइंट हिट करता है। स्कोप चेन का ट्रैक रखने के लिए हर समय बहुत अधिक मेमोरी होगी (आपके बंद होने और संदर्भों की जटिलता के आधार पर)। अधिक जानकारी के लिए इस सुविधा का अनुरोध देखें: https://groups.google.com/forum/#!topic/google-chrome-developer-tools/wKEMpKjXR7s

ECMA 262 (10.3.1) बताता है कि कैसे पहचानकर्ता संकल्प किया जाना है, इस का सबसे महत्वपूर्ण हिस्सा GetIdentifierReference (lex, name, strict) जो ECMA 262 (10.2.1) में वर्णन किया गया कॉल करने के लिए है। जहां तक ​​मुझे पता है कि इस कार्य को रनटाइम पर कॉल करने के लिए ईसीएमएस्क्रिप्ट के किसी भी कार्यान्वयन में कोई आदेश नहीं है।

हालांकि this प्रश्न (या सटीक उत्तर देने के लिए) दिलचस्प हो सकता है क्योंकि यह आपके द्वारा पूछे जाने वाले कम से कम करीब आता है।

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

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