2011-02-07 15 views
5

è possibile avere più di un costruttore per una classe in javascript? cioè uno con parametri zero, uno con uno, uno con due, ecc ...javascript: diversi costruttori per lo stesso tipo di oggetto

se sì, come?

grazie!

+0

Ciò che si vuole è chiamato "polimorfica funzione-costruttore". guardare http://www.highdots.com/forums/javascript/multiple-constructors-allowed-javascript-198415.html –

+0

Possibile duplicato di [modello JavaScript per più costruttori] (http://stackoverflow.com/questions/3220721/javascript-pattern-for-multiple-constructors) – Suma

risposta

8

No, JavaScript non supporta l'overloading di funzioni.

Tuttavia, all'interno di ogni funzione è possibile accedere a uno arguments object, che contiene tutti gli argomenti forniti alla funzione, dichiarati o meno. Puoi semplicemente guardarlo e decidere cosa esattamente vuoi fare nel tuo costruttore.

Bad, ad esempio non raffinato:

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

C'è qualche altro modo oltre a questo? – FranXh

+1

Bene, * no *, Javascript non supporta * sovraccarico di funzione *. Ci sono probabilmente innumerevoli schemi di progettazione con i quali è possibile evitare di entrare in una situazione in cui si pensa che sia necessario sovraccaricare le funzioni per cominciare. – deceze

Problemi correlati