Вот в одну сторону
function params(str) {
var res = {};
(str || location.search).toLowerCase().replace(/^\?/, "").split("&").forEach(function(str) {
str = str.split("=");
res[str[0]] = str[1] || true;
});
return res;
}
params("?name=Ivan&surname=Ivanov")
// Object {name: "Ivan", surname: "Ivanov"}
И так обратно
function query(obj) {
var str = "";
for (var prop in obj) {
str && (str += "&") || (str = "?");
if (obj.hasOwnProperty(prop)) str += prop + "=" + obj[prop];
}
return str;
}
query({name: "Ivan", surname: "Ivanov"})
// "?name=Ivan&surname=Ivanov"