Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manos a la obra
Después de un poco de teoría empecemos con lo divertido, hablemos de código,
como se mencionó con anterioridad JS ya permite el manejo de clases lo que
conocemos como prototipos.
1
USANDO CLASES EN JAVASCRIPT
*/
class CalculadoraUsandoClass
{
/**
* Metodo principal para incializar nuestra clase.
*
* @return void.
*/
constructor()
{
//Variables que estaran disponibles en el scope global
//de la clase
this.valor_a = 0;
this.valor_b = 0;
console.log("Se genero la instancia de CalculadoraUsandoClass");
}//constructor
//=================================================//
/**
* Metodo para definir los valores de la clase
*
* @param Integer valor_a Primer valor.
* @param Integer valor_b Segundo valor.
*
* @return void.
*/
setValores(valor_a, valor_b)
{
this.valor_a = valor_a;
this.valor_b = valor_b;
console.log(`El valor de a es => ${this.valor_a}`);
console.log(`El valor de b es => ${this.valor_b}`);
}//setValores
}//CalculadoraUsandoClass
Como se muestra en ejemplo anterior se genera una clase utilizando las nuevas
especificaciones de EcmaScript 6, de entrada podemos apreciar.
5. Podemos ver que la nueva sintaxis es muy similar a la que presentan otros
lenguajes de programación que utilizan POO, por lo que puede ser entendida
con mayor facilidad por otros desarrolladores.
2
USANDO CLASES EN JAVASCRIPT
Todo suena muy bien, pero cual es punto de comparación para poder apreciar las
mejoras que ofrece el manejo de clases dentro de JS, analicemos el siguiente
ejemplo.
/**
* Declaracion de nuestro prototipo
* Esto tambien funcionara como un constructor
*/
function CalculadoraUsandoPrototype()
{
//Variables que estaran disponibles en el scope global
//del prototipo
this.valor_a = 0;
this.valor_b = 0;
console.log("Se genero la instancia de CalculadoraUsandoPrototype",);
}//CalculadoraUsandoPrototype
//=================================================//
/**
* Metodo para definir los valores del prototipo
*
* @param Integer valor_a Primer valor.
* @param Integer valor_b Segundo valor.
*
* @return void.
*/
CalculadoraUsandoPrototype.prototype.setValores = function(valor_a, valor_b)
{
this.valor_a = valor_a;
this.valor_b = valor_b;
console.log(`El valor de a es => ${this.valor_a}`);
console.log(`El valor de b es => ${this.valor_b}`);
}//setValores
Como se muestra en el ejemplo anterior podemos ver que se genera una codificación
similar a la del ejemplo anterior solo que en este destacan.
3. Al igual que el ejemplo de clases se utiliza new para generar una instancia del
prototipo.
3
USANDO CLASES EN JAVASCRIPT
4. El código puede ser comprendido por los desarrolladores que están muy
acostumbrados a la magia de JS, pero talvez no por terceros ya que de primera
vista no parece POO.
Hasta este punto podemos ver claramente muchas mejoras que nos brinda el manejo
de clases en JS pero por eso no subestimemos el manejo de prototipos ya que son
muy potentes si quieres ver un poco más de prototype puedes ver.
Utilizando herencia
Una de las grandes ventajas que ofrece POO es la herencia, prácticamente es tomar
métodos de otra clase e implementarlos en una clase nueva, con las nuevas
especificaciones de EcmaScript 6, facilita el manejo de la herencia prácticamente
podemos utilizar el todo poderoso extends, modifiquemos nuestro ejemplo pasado
para agregarle un nuevo método heredado.
/**
* Declaramos la clase suma de la cual
* extendera la CalculadoraUsandoClass.
*/
class SumaUsandoClass
{
/**
* Metodo principal para incializar nuestra clase.
*
* @return void.
*/
constructor()
{
console.log("Soy el consturctor de la clase SumaUsandoClass");
}//constructor
//=================================================//
/**
* Permite la suma de los valores que tiene la clase padre.
*
* @return void.
*/
getSuma()
{
let resultado = this.valor_a + this.valor_b;
console.log(`La suma de ${this.valor_a} + ${this.valor_b} = ${resultado}`);
}//getSuma
}//SumaUsandoClass
//=================================================//
/**
* Declaramos la clase y generamos una herencia de la
* clase SumaUsandoClass.
*/
class CalculadoraUsandoClass extends SumaUsandoClass
{
/**
* Metodo principal para incializar nuestra clase.
*
* @return void.
*/
constructor()
{
console.log("Se genero la instancia de CalculadoraUsandoClass");
4
USANDO CLASES EN JAVASCRIPT
//=================================================//
/**
* Metodo para definir los valores de la clase
*
* @param Integer valor_a Primer valor.
* @param Integer valor_b Segundo valor.
*
* @return void.
*/
setValores(valor_a, valor_b)
{
this.valor_a = valor_a;
this.valor_b = valor_b;
console.log(`El valor de a es => ${this.valor_a}`);
console.log(`El valor de b es => ${this.valor_b}`);
}//setValores
}//CalculadoraUsandoClass
super.[Nombre_del_metodo_de_la_clase_padre]();
5
USANDO CLASES EN JAVASCRIPT
Nuevamente para poder ver las mejoras obtenidas utilicemos el siguiente punto de
comparación.
/**
* Declaracion de nuestro prototipo
* Esto tambien funcionara como un constructor
*/
function SumaUsandoPrototype()
{
console.log("Soy el consturctor de la clase SumaUsandoClass");
}//SumaUsandoPrototype
//=================================================//
SumaUsandoPrototype.prototype.getSuma = function()
{
let resultado = this.valor_a + this.valor_b;
console.log(`La suma de ${this.valor_a} + ${this.valor_b} = ${resultado}`);
};
//=================================================//
/**
* Declaracion de nuestro prototipo
* Esto tambien funcionara como un constructor
*/
function CalculadoraUsandoPrototype()
{
//Esto es el llamado al constructor del prototipo
//SumaUsandoPrototype
SumaUsandoPrototype.call(this);
//Variables que estaran disponibles en el scope global
//del prototipo
this.valor_a = 0;
this.valor_b = 0;
console.log("Se genero la instancia de CalculadoraUsandoPrototype",);
}//CalculadoraUsandoPrototype
//=================================================//
/**
* Metodo para definir los valores del prototipo
*
* @param Integer valor_a Primer valor.
* @param Integer valor_b Segundo valor.
*
* @return void.
*/
CalculadoraUsandoPrototype.prototype.setValores = function(valor_a, valor_b)
{
this.valor_a = valor_a;
this.valor_b = valor_b;
console.log(`El valor de a es => ${this.valor_a}`);
console.log(`El valor de b es => ${this.valor_b}`);
}//setValores
6
USANDO CLASES EN JAVASCRIPT
Hasta este punto podemos ver muchas mejoras en el uso de clases sobre
los prototipos en JS, pero las clases aún presentan otras mejoras de las cuales
destacan.
get
Es una propiedad que nos permite ejecutar una función la cual se llamada cuando la
propiedad es requerida, otra de sus características es que no recibe parámetros,
prácticamente solo es para consulta.
set
Es una propiedad que permite ejecutar una función la cual se ejecutará para asignar
un valor, otra de sus características es que solo recibe un parámetro el cual es el
valor que será asignado.
static
Como en otros lenguajes de programación JS nos permite declarar un método
estático el cual puede ser accedido sin la necesidad de instanciar la clase.
Al parecer estos métodos son mágicos, pero la teoría no dice mucho por lo que
realizaremos un ejemplo básico para poder ver las propiedades explicada dichas en
acción.
/**
* Declaramos la clase y generamos una herencia de la
* clase SumaUsandoClass.
*/
class Calculadora
{
/**
* Metodo principal para incializar nuestra clase.
*
* @return void.
*/
constructor()
{
//Variables que estaran disponibles en el scope global
//de la clase
this.valor_a = 0;
7
USANDO CLASES EN JAVASCRIPT
this.valor_b = 0;
}//constructor
//=================================================//
/**
* Permite asignar el valor para this.valor_a.
*
* @param Integer valor Valor a asignar.
*
* return void.
*/
set valorA(valor)
{
console.log(`Asignando el primer valor = ${valor}`);
this.valor_a = valor;
}//valorA
//=================================================//
/**
* Permite asignar el valor para this.valor_b.
*
* @param Integer valor Valor a asignar.
*
* return void.
*/
set valorB(valor)
{
console.log(`Asignando el primer valor = ${valor}`);
this.valor_b = valor;
}//valorB
//=================================================//
/**
* Permite conseguir la suma de unos valores datos.
*
* return integer.
*/
get suma()
{
let resultado = this.valor_a + this.valor_b;
return `La suma de ${this.valor_a} + ${this.valor_b} = ${resultado}`;
}//suma
//=================================================//
/**
* Realiza la multiplicacion de unos valores dados,
* Pra acceder ah este metodo no es necesario contar con una
* instancia de la clase.
*/
static multiplicacion(valor_a, valor_b)
{
let resultado = valor_a * valor_b;
return `La multiplicación de ${valor_a} * ${valor_b} = ${resultado}`;
}//multiplicacion
}//calcladora
8
USANDO CLASES EN JAVASCRIPT
//Usando get
get [nombre_del_metodo](){}
//Usando set
set [nombre_del_metodo]([valor_a_asignar]){}
//Usando static
static [nombre_del_metodo](parametros){}
3. Para poder ejecutar los métodos que cuenten con las propiedades
mencionadas se utiliza la siguiente sintaxis.
Conclusión
Como podemos ver el manejo de clases en JS nos brinda muchas ventajas, pero
esto no quiere decir que los prototipos no cuenten con las propias, hay que recordar
que los prototipos es la manera con la se inicia el manejo de POO en JS.