I have this little utility/helper which serializes a form into a javaScript object. $.fn.serializeObject = function(fn) { var o = {}, a = this.serializeArray(), that; $.each(a, function() { that = this; if($.isFunction(fn)){ that = fn(that.name, that.value); } if(o[this.name] !== undefined) { val = that.value || ''; if(!o[that.name].push) { o[that.name] = [o[that.name]]; } o[that.name].push(that.value); } else { o[that.name] = that.value; } }); return o; }; A typical usage of this plugin will be: someNameSpace = { //... processForm: function (form) { return JSON.stringify(form.serializeObject(function (key, val) { return { name: key, value: encodeURIComponent(val) }; })); } //... }; Any suggestions on how to improve this piece of code? - Maybe improve performance - Maybe its the API-Design - Code readability.. See [original gist](https://gist.github.com/adardesign/5091258#file-jquery-serializeobject-js)