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