Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: bermartinv en 11 de Noviembre 2015, 23:21

Título: JavaScript diferencia entre propiedades estáticas y herencia prototype CU01147E
Publicado por: bermartinv en 11 de Noviembre 2015, 23:21
Necesito un empujón ,para poder tener claro cuando utilizar prototype o propiedades estáticas. No veo diferencia alguna y me gustaría me pudieran ayudar a entender cuando usar una u otra.

EN EL CASO DE PROTOTYPE:

Código: [Seleccionar]
function construyendoProto(){
    this.definicionSegunDiccionario="Un cometa es muy chulo";
    this.obtenerRadio=function(){
        return(this.diametro)/2;       
    }
    this.obtenerTemperaturaFarenheit=function(){
        return (1.8*this.temperatura)+32;
       
    }
}
   
cometaDef.prototype=new construyendoProto();


Y EN EL CASO DE METODOS/PROPIEDADES ESTÁTICAS:

Código: [Seleccionar]
cometaDef.definicionSegunDiccionario="Un cometa es muy chulo";
cometaDef.obtenerRadio=function(){
        return(this.diametro)/2;       
    }
cometaDef.obtenerTemperaturaFarenheit=function(){
        return (1.8*this.temperatura)+32;   
    } 
   
Título: Re:JavaScript diferencia entre propiedades estáticas y herencia prototype CU01147E
Publicado por: Ogramar en 13 de Noviembre 2015, 08:46
Hola la diferencia sería la siguiente

Una propiedad estática digamos "de una clase" (aunque en JavaScript no se use el término "clase") sólo puede ser accedida directamente desde el nombre de dicha clase, pero no puede ser accedida por instancias de la clase.

Las propiedades definidas a través de prototype son propiedades que comparten por herencia todas las instancias de la clase.

Supongamos una clase Cuadrado que hereda de Rectangulo. En ese caso cualquier instancia de Cuadrado compartirá las propiedades del prototype Rectangulo, pero no compartirá las propiedades estáticas de Rectangulo.

Una diferencia de JavaScript con Java es que JavaScript no permite el acceso desde objetos a las propiedades estáticas, mientras que Java sí lo permite.

Este código sería un ejemplo de la diferencia entre propiedad estática y propiedad heredada

Código: [Seleccionar]
//Constructor
var Person = function (name, age){
    //private properties
    var priv = {};
   
    //Public properties
    this.name = name;
    this.age = age;
   
    //Public methods
    this.sayHi = function(){
        alert('hello');
    }
}

// A static method; this method only
// exists on the class and doesn't exist
// on child objects
Person.sayName = function() {
    alert("I am a Person object ;)"); 
};

// An instance method;
// All Person objects will have this method
Person.prototype.setName = function(nameIn) {
    this.name = nameIn; 
}

// Tests
var per = new Person('John Doe', 22);

//Shows alert
Person.sayName();

//TypeError: Object [object Object] has no method 'sayName'
per.sayName()

//Show alert
per.sayHi();

//John Doe
per.name;

//22
per.age;

per.setName('Jane Doe');

//Jane Doe
per.name;

Salu2
Título: Re:JavaScript diferencia entre propiedades estáticas y herencia prototype CU01147E
Publicado por: bermartinv en 16 de Noviembre 2015, 10:00
Muchas gracias, ahora lo entiendo bastante mejor.