He visto que utilizando la palabra prototype, se pueden asignar métodos/atributos a un objeto de la siguiente manera:
Código Javascript :
var fn = new Function();
Function.prototype.attribute = "Este es un atributo";
Function.prototype.method = function(){
return "Este es un método";
};
console.log(fn.attribute); //Imprime "Este es un atributo"
console.log(fn.method()); //Imprime "Este es un método"
También de esta otra forma:
Código Javascript :
var fn = function(){
if (this === window)
return new fn();
return this;
};
fn.prototype = {
attribute: "Este es un atributo",
method: function(){
return "Este es un método";
}
};
console.log(fn().attribute); //Imprime "Este es un atributo"
console.log(fn().method()); //Imprime "Este es un método"
Pero he visto que de este modo también es posible:
Código Javascript :
var fn = function(){
if (window == this)
return new fn();
this.attribute = "Este es un atributo";
this.method = function(){
return "Este es un método";
};
return this;
};
console.log(fn().attribute); //Imprime "Este es un atributo"
console.log(fn().method()); //Imprime "Este es un método"
Y también de esta otra forma:
Código Javascript :
var fn = new Function();
fn.attribute = "Este es un atributo";
fn.method = function(){
return "Este es un método";
};
console.log(fn.attribute); //Imprime "Este es un atributo"
console.log(fn.method()); //Imprime "Este es un método"
Entonces, mi duda y pregunta es, ¿cuál de estas formas es la más adecuada y qué diferencias hay entre ellas, además de la sintaxis? Estoy elaborando una pequeña librería guiándome con este artículo y es por eso que empecé a indagar sobre prototype y surgió esta duda.
Saludos
