search.replace()的第二个函数参数的参数,它们在通用的情况下各自代表什么意思没看懂
function getQueryObject(url) {
url = url == null ? window.location.href : url;
var search = url.substring(url.lastIndexOf("?") + 1);
var obj = {};
var reg = /([^?&=]+)=([^?&=]*)/g;
search.replace(reg, function (rs, $1, $2) {
var name = decodeURIComponent($1);
var val = decodeURIComponent($2);
val = String(val);
obj[name] = val;
return rs;
});
return obj;
}
参考MDN
rs是匹配的子串,$1和$2代表匹配的第n个分组,这里也就是
([^?&=]+)
(即query的name)和([^?&=]*)
(即query的value),遍历同时将value赋值到obj对应的name属性上。