URL和URLSearchParams是Javascript中用于操作URL的两个内置对象。
URL对象用于解析和操作URL,其构造函数如下:
new URL(url[, base])
其中,url为要解析的URL字符串,base为可选参数,指定基础URL以处理相对URL。URL对象提供了一系列方法和属性,常用的有:
href
: 返回URL的完整字符串protocol
: 返回URL的协议部分(比如http://)host
: 返回URL的主机部分(比如www.example.com)pathname
: 返回URL的路径部分(比如/example)search
: 返回URL的查询参数部分(比如?key1=value1&key2=value2)hash
: 返回URL的哈希部分(比如#section1)
URLSearchParams对象用于解析和操作URL的查询参数,其构造函数如下:
new URLSearchParams(init)
其中,init为可选参数,可以是一个URLSearchParams对象、为URL查询字符串或包含查询字符串的任何对象。URLSearchParams对象提供了一系列方法和属性,常用的有:
append(name, value)
: 在查询参数中添加一个新的键值对delete(name)
: 删除指定键的所有值get(name)
: 获取指定键的第一个值getAll(name)
: 获取指定键的所有值的数组has(name)
: 判断是否存在指定键set(name, value)
: 设置指定键的值,如果已存在则覆盖,否则添加新值toString()
: 返回查询参数的序列化字符串
使用示例:
// 使用URL对象解析URL
const url = new URL('https://www.example.com/example?key1=value1&key2=value2');
console.log(url.protocol); // 输出:https:
console.log(url.host); // 输出:www.example.com
console.log(url.pathname); // 输出:/example
console.log(url.search); // 输出:?key1=value1&key2=value2
// 使用URLSearchParams对象解析查询参数
const params = new URLSearchParams(url.search);
console.log(params.get('key1')); // 输出:value1
console.log(params.getAll('key2')); // 输出:['value2']
// 修改查询参数
params.delete('key1');
params.set('key3', 'value3');
console.log(params.toString()); // 输出:'key2=value2&key3=value3'
// 更新URL的查询参数
url.search = params.toString();
console.log(url.href); // 输出:'https://www.example.com/example?key2=value2&key3=value3'
通过URL对象和URLSearchParams对象,我们可以方便地解析和操作URL的各个部分和查询参数。