2011-01-27 16 views
6

http://ejohn.org/blog/building-a-javascript-library/स्पष्ट रूप से जावास्क्रिप्ट

में एक निर्माता से एक मूल्य के रिटर्निंग ऊपर के लिंक जॉन Resig कॉल करके और निर्माता में new foo लौटने अगर फोन करने वाले मूल रूप से करना भूल का सुझाव देता है।

जो मुझे कुछ समझ में आता है, लेकिन फिर मुझे सख्त त्रुटि मिलती है क्योंकि मेरा कन्स्ट्रक्टर 'हमेशा' एक मूल्य वापस नहीं करता है। जावास्क्रिप्ट में रचनाकारों की थोड़ी सी समझ हासिल करने पर, मैंने this लौटाना बंद कर दिया क्योंकि new स्वचालित रूप से ऐसा करता है।

मेरे सवाल है, मैं ...

  1. रक्षात्मक तकनीक वर्णित का उपयोग नहीं करना चाहिए?
  2. इसे मेरे कन्स्ट्रक्टर के अंत में वापस कर दें?
  3. रहस्य विकल्प जो मैं अनजान हूं?

उत्तर

4

लौटने this व्यर्थ है क्योंकि अगर फोन करने वाले को जोड़ने के लिए भूल गया new तो this दस्तावेज़, नहीं foo का एक उदाहरण होगा। क्या मैं आमतौर पर करते हैं कि प्रभाव

संपादित करने के लिए if(! (this instanceof foo)) return new foo(); या कुछ और के साथ एक निर्माता शुरू है: एक और अधिक सावधान पढ़ने के बाद, यदि आप सख्त त्रुटियों से बचने के लिए चाहते हैं और अगर आपने पहले से हाँ कर रहे हैं,, return this अंत में है आमतौर पर एक अच्छा विचार

+0

सही, यही वह सुझाव है जिसने मुझे प्रश्न का नेतृत्व किया। अगर मैं स्पष्ट रूप से किसी त्रुटि के दौरान वापस आ जाता हूं, तो मुझे सख्त चेतावनी मिलती है क्योंकि जब मैं अच्छी तरह से – griotspeak

+0

हाँ जाता हूं तो मैं पूरी तरह से वापस आ जाता हूं, इसलिए यदि यह सब ठीक हो जाता है तो यह वापस करना शायद एक अच्छा विचार है – tobyodavies

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