Applying functions as if they were plugins

Applying functions as if they were plugins


Hi, I don't know if this has been suggested before, I couldn't find
anything in this mailing list.
I sometimes find it handy to write reusable functions as if they were
$.fn plugins.
Functions that may be used elsewhere but aren't general enough to
actually put in $.fn.
Example:
function myfn = function(v) {
return this.filter(...).each(function() { ...use arg v for
something... }).end();
};
Called like this:
myfn.call($(selector), 'test').show();
From this I can chain other jQuery functions, but not another similar
style call.
I propose a simple addition to jQuery:
// Apply a function to a jQuery object, as if it were a plugin
$.fn.fn = function(fn) {
    return fn.apply(this, Array.prototype.slice.call(arguments,1));
};
So instead, the call becomes:
$(selector).fn(myfn,'test').show();
and chaining is nicer:
$(selector).fn(myfn,'test').fn(myfn2).fn(myfn3);
It also allows inline recursive functions (useful for building trees):
$(selector).fn(function() {
if (this.length) {
this.fn(myfn) // A function that adds children
.children()
.fn(arguments.callee) // Do the same to the children
.end();
}
return this;
});
I know it could just be a plugin, but it is very small and seems
useful enough to add into the core,
and it could encourage developers to program more in the plugin style.