Aquí hay un poco de la fuente de jquery. Básicamente, están buscando los tipos de parámetros y asignándolos a otros parámetros según sea necesario. Por ejemplo, si el elemento en la posición "selector" en la lista de parámetros no es una cadena, suponen que se suponía que era el parámetro "datos", y así sucesivamente.
on: function(types, selector, data, fn, /*INTERNAL*/ one) {
var origFn, type;
// Types can be a map of types/handlers
if (typeof types === "object") {
// (types-Object, selector, data)
if (typeof selector !== "string") {
// (types-Object, data)
data = selector;
selector = undefined;
}
for (type in types) {
this.on(type, selector, data, types[ type ], one);
}
return this;
}
if (data == null && fn == null) {
// (types, fn)
fn = selector;
data = selector = undefined;
} else if (fn == null) {
if (typeof selector === "string") {
// (types, selector, fn)
fn = data;
data = undefined;
} else {
// (types, data, fn)
fn = data;
data = selector;
selector = undefined;
}
}
+1 a menudo me he preguntado esto. – jondavidjohn