Hoy me preguntaba un amigo cómo podía ampliar la funcionalidad de un objeto en js con más métodos y como soy un muy buen mandao aquí se lo explico en un post.
La idea es esta: imaginemos que tenemos un objeto que hace A y B, pero también necesitamos que haga C, que es una situación habitual cuando usamos plugins o librerías basadas en jQuery, como jQuery UI, y la funcionalidad por defecto se nos queda corta.
En código, tenemos este objeto,
var PluginJQuery = function() {
this.funcionMaravillosa = function() {
// hago otra cosa
},
this.init = function(datosInicializacion) {
// hago algo
this.funcionMaravillosa();
}
}
al cual accedemos una vez instanciada la clase,
miPluginJQuery = new PluginJQuery();
miPluginJQuery.init();
y necesitamos que también haga esto otro:
var pluginExtendido = function() {
this.metodoNuevo = function() {
},
this.otroMetodo = function() {
}
}
Como ya he explicado por aquí, una manera de hacerlo sería mediante el objeto prototype, que podemos usar de varias maneras. Por ejemplo, añadiendo nuevos métodos a la instancia o prototipando previamente una de las clases:
pluginExtendido.prototype = new PluginJQuery();
miPluginJQuery = new pluginExtendido();
miPluginJQuery.metodoNuevo();
miPluginJQuery.funcionMaravillosa();
cómo mola escribir entradas cortas, esto hay que repetirlo xD.