2011-02-07 22 views
5

¿es posible tener más de un constructor para una clase en javascript? es decir, uno con cero parámetros, uno con uno, uno con dos, etc. ...javascript: diferentes constructores para el mismo tipo de objeto

si es así, ¿cómo?

gracias!

+0

Lo que queremos será llamada "función de constructor polimórfica". mira en http://www.highdots.com/forums/javascript/multiple-constructors-allowed-javascript-198415.html –

+0

Posible duplicado de [Patrón de JavaScript para múltiples constructores] (http://stackoverflow.com/questions/3220721/javascript-pattern-for-multiple-constructors) – Suma

Respuesta

8

No, no soporta Javascript sobrecarga de funciones.

Sin embargo, dentro de cada función tiene acceso a arguments object, que mantiene todos los argumentos suministrados a la función, declarados o no. Simplemente puede verlo y decidir qué es exactamente lo que quiere hacer en su constructor.

Bad, sin refinar ejemplo:

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

¿Hay alguna otra manera aparte de esta? – FranXh

+1

Bueno, * no *, Javascript no admite * sobrecarga de funciones *. Probablemente existen innumerables patrones de diseño con los que puedes evitar entrar en una situación en la que crees que necesitas sobrecargar la función para empezar. – deceze

Cuestiones relacionadas