2011-02-07 18 views
5

के एक ही प्रकार के लिए अलग अलग निर्माताओं यह जावास्क्रिप्ट में एक वर्ग के लिए एक से अधिक निर्माताओं के लिए संभव है? शून्य पैरामीटर, एक के साथ एक, दो के साथ एक, आदि के साथ अर्थात ...जावास्क्रिप्ट: वस्तु

अगर, ऐसा कैसे?

धन्यवाद!

+0

क्या आप के नाम से जाना जाएगा "बहुरूपी समारोह-निर्माता" चाहते हैं। http://www.highdots.com/forums/javascript/multiple-constructors-allowed-javascript-198415.html [कई निर्माताओं के लिए जावास्क्रिप्ट पैटर्न] (की –

+0

संभावित डुप्लिकेट http://stackoverflow.com/questions/3220721 पर देखो/जावास्क्रिप्ट पैटर्न के लिए बहु-कंस्ट्रक्टर्स) – Suma

उत्तर

8

नहीं है, जावास्क्रिप्ट समारोह से अधिक भार का समर्थन नहीं करता।

हालांकि, प्रत्येक फ़ंक्शन के अंदर आपके पास arguments object तक पहुंच है, जिसमें फ़ंक्शन को प्रदान किए गए सभी तर्कों को घोषित किया गया है या नहीं। आप बस इसे देख सकते हैं और तय कर सकते हैं कि आप अपने कन्स्ट्रक्टर में वास्तव में क्या करना चाहते हैं।

बुरा, अपरिष्कृत उदाहरण:

function Foo() { 

    function singleParamConstructor(foo) { 
     ... 
    } 
    function twoParamConstructor(foo, bar) { 
     ... 
    } 

    switch (arguments.length) { 
     case 1 : 
      singleParamConstructor(arguments[0]); 
      break; 
     case 2 : 
      twoParamConstructor(arguments[0], arguments[1]); 
      break; 
     ... 
    } 
} 
+0

वहाँ किसी अन्य तरीके से अलग यह एक से है? – FranXh

+1

ठीक है, * कोई *, जावास्क्रिप्ट का समर्थन नहीं करता * समारोह ओवरलोडिंग *। संभवतः असंख्य डिज़ाइन पैटर्न हैं जिनके साथ आप ऐसी परिस्थिति में आने से बच सकते हैं जिसमें आपको लगता है कि आपको प्रारंभ करने के लिए फ़ंक्शन ओवरलोडिंग की आवश्यकता है। – deceze

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