Estoy tratando de entender los principios de la cadena de funciones estilo jQuery directamente en mi cabeza. Con esto quiero decir:¿Cómo funciona el encadenamiento básico de objeto/función en javascript?
var e = f1('test').f2().f3();
Tengo un ejemplo para trabajar, mientras que otro no. Voy a publicar los de abajo. Siempre quiero aprender los primeros principios fundamentales de cómo funciona algo para poder construir sobre eso. Hasta ahora, solo he tenido un conocimiento superficial y poco claro de cómo funciona el encadenamiento y me estoy encontrando con errores que no puedo resolver inteligentemente.
lo que sé:
- Las funciones tienen que volver a sí mismos, también conocido como "devolver este;"
- Las funciones encadenables deben residir en una función principal, también conocida como jQuery, .css() es un método secundario de jQuery(), por lo tanto jQuery(). Css();
- La función primaria debe devolverse o una nueva instancia de sí mismo.
Este ejemplo práctico:
var one = function(num){
this.oldnum = num;
this.add = function(){
this.oldnum++;
return this;
}
if(this instanceof one){
return this.one;
}else{
return new one(num);
}
}
var test = one(1).add().add();
Pero éste no:
var gmap = function(){
this.add = function(){
alert('add');
return this;
}
if(this instanceof gmap) {
return this.gmap;
} else{
return new gmap();
}
}
var test = gmap.add();
Las funciones no se devuelven a sí mismas, devuelven el objeto que admite los métodos que está encadenando. En el caso jQuery, es el nodo que se está operando. – drudru
Haga que cada función termine con un 'return this;'. –
@MarcB - Lo sé, pero ¿cómo? –