ES6 URL对象

URL对象是现代浏览器提供的一个内置对象,用于表示和操作URL地址。这个对象提供了很多有用的方法和属性,可以帮助开发者解析、构建和操作URL。URL对象在ECMAScript 6(ES6)中被引入,并且在大多数现代浏览器中都有良好的支持。

创建 URL 对象

URL对象可以通过以下方式创建:

javascript 复制代码
const url = new URL(urlString, baseURI);
  • urlString 是一个字符串,表示要解析的URL。
  • baseURI 是一个可选参数,表示基础URI,用于解析相对URL。

URL 对象的属性

URL对象有很多有用的属性,以下是其中的一些主要属性:

  • href: 返回完整的URL字符串。
  • origin : 返回协议、主机名和端口号,例如http://example.com:8080。
  • protocol : 返回URL的协议部分,包括后面的冒号,例如http:。
  • username: 返回用户名。
  • password: 返回密码。
  • host : 返回主机名和端口号,例如example.com:8080。
  • hostname : 返回主机名,例如example.com。
  • port: 返回端口号,如果没有指定则返回空字符串。
  • pathname : 返回路径名称,包括前导的斜杠,例如/path/to/resource。
  • search : 返回查询字符串,包括前导的问号?,例如?key=value。
  • hash : 返回哈希部分,包括前导的井号#,例如#section1。

URL 对象的方法

URL对象也提供了一些方法来操作URL:

  • toString() : 返回URL对象的完整字符串形式,等同于href属性。
  • searchParams : 返回一个URLSearchParams对象,用于操作查询字符串。

URLSearchParams 对象

URLSearchParams对象可以用来处理URL的查询字符串部分,提供了以下方法:

  • append(name, value): 向查询字符串中追加一个名称和值。
  • delete(name): 删除查询字符串中指定名称的所有值。
  • entries(): 返回一个迭代器,遍历查询字符串中的所有名称和值对。
  • forEach(callback, thisArg): 对查询字符串中的每个名称和值对调用一个函数。
  • get(name): 获取查询字符串中指定名称的第一个值。
  • getAll(name): 获取查询字符串中指定名称的所有值。
  • has(name): 检查查询字符串中是否存在指定名称。
  • set(name, value): 设置查询字符串中指定名称的值。

示例

下面是一个使用URL对象和URLSearchParams对象的示例:

javascript 复制代码
// 创建一个URL对象
const url = new URL('https://example.com/path/to/resource?query=123#section1');

// 访问URL的各种部分
console.log(url.href);           // 输出: https://example.com/path/to/resource?query=123#section1
console.log(url.origin);         // 输出: https://example.com
console.log(url.protocol);       // 输出: https:
console.log(url.host);           // 输出: example.com
console.log(url.hostname);       // 输出: example.com
console.log(url.port);           // 输出: '' (没有指定端口)
console.log(url.pathname);       // 输出: /path/to/resource
console.log(url.search);         // 输出: ?query=123
console.log(url.hash);           // 输出: #section1

// 访问和修改查询字符串
const searchParams = url.searchParams;
console.log(searchParams.get('query'));  // 输出: 123

// 修改查询字符串
searchParams.set('query', '456');
url.search = searchParams.toString();  // 更新URL对象的search属性

console.log(url.href);  // 输出: https://example.com/path/to/resource?query=456#section1

总结

URL对象提供了一种强大的方式来解析和操作URL,而URLSearchParams对象则专注于处理查询字符串。这些对象使得处理URL变得更加简单和直观,非常适合用于需要动态生成或解析URL的应用场景。如果您正在开发一个需要频繁处理URL的Web应用,掌握这些API是非常有用的。

相关推荐
HSunR3 小时前
ruoyi 若依 自定义注解 参数校验
java·前端·数据库
拆房老料4 小时前
ONLYOFFICE也能像Microsoft Word和WPS一样分别设置中西文字体
前端·html·word·开源软件·wps
Solis程序员4 小时前
Stripe 幂等表:把「不确定的重试」变成「查表返回」
前端·安全·bootstrap·php·agent
李纲明4 小时前
WordPress 站点变慢:按 TTFB → 缓存 → 查询 → 前端 分层排查(含配置注意)
前端·缓存·性能优化·wordpress·后端开发
程序人生8884 小时前
PDF 转 Word 版式错乱、表格丢失?DocConverter Web 格式互转引擎的保真实践
前端·人工智能·opencv·机器学习·pdf·word
粥里有勺糖5 小时前
安利一下最近用的桌面“Agent” | T3 Code
前端·github·ai编程
xy34535 小时前
Axure 9.0 动态面板基本操作
前端·ui·html·axure·原型·产品设计
不停喝水6 小时前
【前端转全栈java速通课】 项目实战④7-11节 操作数据库-登录-注册-修改密码-注销-mubatis-plus简化crud-
java·前端·数据库
一水鉴天6 小时前
统一对象拓扑(UOT)设计全链定稿:从三件事分离到三继承 之1 20261010(豆包“查看聊天内容”继续)
前端·css
栖凤7 小时前
Java 的 try-catch 在 Agent 里失效了,我用了 5 个模式才兜住
java·前端·python