Si usted necesita para crear instancias de varios objetos de una clase, un método consiste en definir la clase a través de la pseudo-constructor de function() .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | / / Definición de clase param1 , param2 ) { Función de CMyClass (param1, param2) { = param1 ; este myProperty = param1.; = param1 + param2 ; este myAdding = param1 + param2.; / / = function ( param1 ) { esto. myMethod = function (param1) { "add: " + this . myAdding + " - Param: " + param1 ) ; alert ("añadir:" + this myAdding + "- Param:". + param1); } } / / new CmyClass ( 10 , 20 ) ; var obj1 = new CMyClass (10, 20); new CmyClass ( 20 , 40 ) ; var obj2 = new CMyClass (20, 40); / / "Hi from obj1" ) ; . obj1 myMethod ("Hola desde obj1"); / / "Hi from obj2" ) ; . obj2 myMethod ("Hola desde obj2"); |
Definida la clase - con un montón de parámetros iniciales - No puedo crear instancias de mi objeto, creando al mismo tiempo con la personalización de la palabra clave new .
También puede insertar una llamada a un método durante la inicialización del objeto, teniendo cuidado de insertar sólo la última - véase la línea 14:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | / / Definición de clase param1 , param2 ) { Función de CMyClass (param1, param2) { = param1 ; este myProperty = param1.; = param1 + param2 ; este myAdding = param1 + param2.; / / = function ( param1 ) { esto. myMethod = function (param1) { "Result: " + this . myResult ) ; alert ("Resultado:". + este MiResultado); } / / function ( ) { este _init. = function () { = this . myProperty * 100 ; este MiResultado = esta myProperty * 100..; } ; este _init ().; } / / new CmyClass ( 10 , 20 ) ; var obj1 = new CMyClass (10, 20); new CmyClass ( 20 , 40 ) ; var obj2 = new CMyClass (20, 40); / / "Hi from obj1" ) ; . obj1 myMethod ("Hola desde obj1"); / / "Hi from obj2" ) ; . obj2 myMethod ("Hola desde obj2"); |
Una forma sería un error - ver la línea 6:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | / / Definición de clase param1 , param2 ) { Función de CMyClass (param1, param2) { = param1 ; este myProperty = param1.; = param1 + param2 ; este myAdding = param1 + param2.; ; este _init ().; / / = function ( param1 ) { esto. myMethod = function (param1) { "Result: " + this . myResult ) ; alert ("Resultado:". + este MiResultado); } / / function ( ) { este _init. = function () { = this . myProperty * 100 ; este MiResultado = esta myProperty * 100..; } } / / new CmyClass ( 10 , 20 ) ; var obj1 = new CMyClass (10, 20); new CmyClass ( 20 , 40 ) ; var obj2 = new CMyClass (20, 40); / / "Hi from obj1" ) ; . obj1 myMethod ("Hola desde obj1"); / / "Hi from obj2" ) ; . obj2 myMethod ("Hola desde obj2"); |
Otra forma de crear un objeto sobre la marcha (en marcha) es declarar una variable / función, de un solo uso:
1 2 3 4 5 6 7 8 9 | { var myObject = { , myProperty: 10, ( ) { myMethod: function () { "Hi from " + this . myProperty ) ; alert ("Hola a" + this myProperty.); } }; ; . myObject myMethod (); |
Esta técnica es útil cuando se desea crear un istranza única de un objeto, y tratarla como tal. Esto se utiliza a menudo en los últimos frameworks como Prototype y sus derivados. A partir de esto, de hecho, no es posible crear una instancia de un nuevo objeto, ya que la clase se ha perdido.
A continuación, puede recurrir al uso de un prototipo para extender una clase, incluso vacía. Por ejemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 | CMyClass función () {} { CMyClass. Prototype = { , myProperty: 10, ( ) { myMethod: function () { "Hi from " + this . myProperty ) ; alert ("Hola a" + this myProperty.); } } new CmyClass ( ) ; var obj = CMyClass nuevo (); ; obj myMethod ().; |
O bien:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | CMyClass función () { = 1000 ; este myOldProperty = 1000.; } { CMyClass. Prototype = { , myProperty: 10, ( ) { myMethod: function () { "Hi from " + this . myProperty ) ; alert ("Hola a" + this myProperty.); "Hi from " + this . myOldProperty ) ; alert ("Hola a" + this myOldProperty.); } } new CmyClass ( ) ; var obj = CMyClass nuevo (); ; obj myMethod ().; |






Últimos Comentarios
Gabriel : Hola, interesante artículo. Yo necesito algo similar pero con algunos cambios. En una ...
sebastian : Gran proporción - ¡gracias!
Asunto : muy útiles por cierto! Lo he probado y es justo lo que necesitaba. Ahora me pregunto ¿cómo puedo obtener ...
Vik : Con la ayuda estratégica!
Pimienta : Hola, no sé si usted es uno de los creadores del plugin WP Bannerize. He visto un ...