2011-06-25 8 views
13

एक कन्स्ट्रक्टर को फ़ंक्शन के रूप में कॉल करने के लिए एक पुरानी चाल (that I learned on SO) है, यानी new कीवर्ड भूलना। निम्नलिखित, या कुछ ऐसा, यह शीर्ष पर प्रत्येक कन्स्ट्रक्टर में जाता है।इस उदाहरण के लिए कठोर मोड विकल्प arguments.callee

if (!(this instanceof arguments.callee)) { 
    throw Error("Constructor called as a function"); 
} 

आपको "use strict"; की आवश्यकता होने पर क्या विकल्प हैं?

क्या इसकी सामान्य प्रकृति को बनाए रखा जा सकता है? या क्या हमें arguments.callee के स्थान पर कन्स्ट्रक्टर के नाम का उपयोग करना है?

उत्तर

5

arguments.callee नामित फ़ंक्शन एक्सप्रेशन के पक्ष में स्वयं को हटा दिया गया है। हालांकि मैं इस कदम से जरूरी नहीं हूं, इस तरह चीजें प्रगति हुई हैं। इस प्रकार, फंक्शन नाम के साथ arguments.callee को सख्त मोड में एकमात्र तरीका है, और गैर-सख्त मोड में भी पसंदीदा तरीका है।

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