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
//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