考虑的细节非常多,还是可以应用到项目中的,不需要在自己解析了
校验是否支持URL对象
https://github.com/zloirock/core-js/blob/master/packages/core-js/internals/native-url.js
module.exports = !fails(function () {var url = new URL('b?a=1&b=2&c=3', 'http://a');var searchParams = url.searchParams;var result = '';url.pathname = 'c%20d';searchParams.forEach(function (value, key) {searchParams['delete']('b');result += key + value;});return (IS_PURE && !url.toJSON)|| !searchParams.sort|| url.href !== 'http://a/c%20d?a=1&c=3'|| searchParams.get('c') !== '3'|| String(new URLSearchParams('?a=1')) !== 'a=1'|| !searchParams[ITERATOR]// throws in Edge|| new URL('https://a@b').username !== 'a'|| new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'// not punycoded in Edge|| new URL('http://тест').host !== 'xn--e1aybc'// not escaped in Chrome 62-|| new URL('http://a#б').hash !== '#%D0%B1'// fails in Chrome 66-|| result !== 'a1c3'// throws in Safari|| new URL('http://x', undefined).host !== 'x';});
https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/web.url.js
