Muchas Gracias por responder.
Cita:
Iniciado por Aijoona Por que necesitarias otra forma/manera?
Porque quiero tratar de ordenar el código JS, tener una mejor opción o alternativa ya probada y evitar usar alguna librería como Backbonejs. Por lo menos de momento.
-----------------------------
Acá les dejo unos cambios que hice sin utilizar métodos como los que plantea "Nisrokh". No se cuáles son las limitaciones de momento.
Ver princcipalmente la clase "Triangulo".
Código:
Código Javascript
:
Ver originalvar Figura = (function(win, doc, undefined) {
'use strict'
var Figura = function(base, altura) {
this.base = base;
this.altura = altura;
}
Figura.prototype = {
constructor : Figura,
area : function() {
return this.base * this.altura;
},
perimetro : function() {
return ( (this.base * 2) + (this.altura * 2) );
}
};
// Private
var _perimetro = function(context) {
return 'Perímetro';
};
return Figura;
})(window, document);
// Herencia, Polimorfismo y Sobrescritura -> ¿Cómo?
// class Circulo extends Figura {}; -> Java, PHP, etc.
var Circulo = (function(win, doc, undefined) {
'use strict'
var Circulo = function(radio) {
this.radio = radio;
}
Circulo.prototype = {
constructor : Circulo,
area : function() {
return ( Math.pow( (Math.PI * this.radio), 2) );
}
};
return Circulo;
})(window, document);
// Herencia
Circulo.prototype = new Figura(40, 80);
var circulito = new Circulo(5);
// Triangulo
var Triangulo = (function(win, doc, undefined) {
'use strict'
// Private Properties
var name = "";
// Constructor
var Triangulo = function(base, altura, angulo, fname) {
Figura.call(this, base, altura);
// Set Private Property
name = fname;
// Set Public Property
this.angulo = angulo;
// Setters and Getters
this.getName = function() {
return name;
}
// Public Methods
this.getAngulo = function() {
return this.angulo;
};
// Sobreescritura ? - check
// Si no esta este método se utiliza el de Figura
this.area = function() {
return ( (this.base * this.altura) / 2);
},
// Polimorfismo ? - check
/*this.area = function(base, altura) {
return ( (base * altura) / 2);
},*/
this.doSomething = function() {
return _doSomethingFine();
}
}
// Private Methods
var _doSomethingFine = function() {
return 'Do something Fine';
}
return Triangulo;
})(window, document);
// Herencia
Triangulo.prototype = new Figura();
var triangulo = new Triangulo(5, 8, 45, 'Nombre Completo');
console.log(triangulo)
console.log('Triangulo - Something => ', triangulo.doSomething());
console.log('Triangulo - Área => ', triangulo.area());
console.log('Nombre-> ', triangulo.getName());