2011-02-07 26 views
5

jest to możliwe, aby mieć więcej niż jeden konstruktor dla klasy w javascript? tj. Jeden z zerowymi parametrami, jeden z jednym, jeden z dwoma, itd ...javascript: różne konstruktory dla tego samego typu obiektu

jeśli tak, jak?

dziękuję!

+0

Co chcesz powinien być nazywany "polimorficzny funkcja-konstruktor". spójrz na http://www.highdots.com/forums/javascript/multiple-constructors-allowed-javascript-198415.html –

+0

Możliwy duplikat [wzoru JavaScript dla wielu konstruktorów] (http://stackoverflow.com/questions/3220721/javascript-pattern-for-multiple-constructors) – Suma

Odpowiedz

8

Nie, JavaScript nie obsługuje przeciążania funkcji.

Jednak w każdej funkcji masz dostęp do arguments object, która przechowuje wszystkie argumenty dostarczone do funkcji, zadeklarowane lub nie. Możesz po prostu na nią spojrzeć i zdecydować, co dokładnie chcesz zrobić w swoim konstruktorze.

Bad, niewybredny przykład:

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

Czy jest inny sposób niż ten? – FranXh

+1

Cóż, * nie *, Javascript nie obsługuje * przeciążania funkcji *. Prawdopodobnie istnieją niezliczone wzorce projektowe, dzięki którym można uniknąć sytuacji, w której na początku trzeba przeciążać funkcję. – deceze

Powiązane problemy