URL构造函数

200 阅读2分钟

在JavaScript中,URL构造函数是一个非常有用的API,用于解析和操作URL字符串。它可以方便地处理URL的各种组成部分,如协议、主机、路径、查询参数等。下面详细介绍URL构造函数的使用方法和示例。

URL构造函数的基本用法

构造函数语法

javascript
new URL(urlString, [baseURL])
  • urlString:要解析的URL字符串。
  • baseURL(可选):基础URL,用于解析相对URL。

属性

URL对象提供了许多属性来访问和修改URL的不同部分:

  • href:完整的URL字符串。
  • origin:URL的协议和主机部分。
  • protocol:协议部分(例如http:https:)。
  • username:用户名部分。
  • password:密码部分。
  • host:主机部分(包括端口号)。
  • hostname:主机名部分。
  • port:端口号部分。
  • pathname:路径部分。
  • search:查询字符串部分(以?开头)。
  • hash:锚点部分(以#开头)。
  • searchParams:一个URLSearchParams对象,用于处理查询字符串。

示例:基本用法

创建URL对象

javascript
const url = new URL('https://example.com/path?query=123#anchor');

console.log(url.href);       // 输出: "https://example.com/path?query=123#anchor"
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"
console.log(url.search);     // 输出: "?query=123"
console.log(url.hash);       // 输出: "#anchor"

处理查询字符串

javascript
const url = new URL('https://example.com/path?query=123&foo=bar');

console.log(url.searchParams.get('query'));  // 输出: "123"
console.log(url.searchParams.get('foo'));    // 输出: "bar"

// 修改查询参数
url.searchParams.set('query', '456');
url.searchParams.append('foo', 'baz');

console.log(url.href);       // 输出: "https://example.com/path?query=456&foo=bar&foo=baz"

处理相对URL

javascript
const base = new URL('https://example.com/');
const relativeUrl = new URL('/path?query=123', base);

console.log(relativeUrl.href);  // 输出: "https://example.com/path?query=123"

示例:构建和修改URL

构建URL

javascript
const url = new URL('https://example.com/path?query=123');

// 修改路径
url.pathname = '/new-path';

// 添加查询参数
url.searchParams.set('foo', 'bar');

// 添加锚点
url.hash = '#section';

console.log(url.href);  // 输出: "https://example.com/new-path?query=123&foo=bar#section"

修改URL

javascript
const url = new URL('https://example.com/path?query=123');

// 修改协议
url.protocol = 'http:';

// 修改主机
url.host = 'new-host.com';

// 修改端口
url.port = '8080';

// 修改路径
url.pathname = '/new-path';

// 修改查询参数
url.searchParams.delete('query');
url.searchParams.set('foo', 'bar');

// 修改锚点
url.hash = '#section';

console.log(url.href);  // 输出: "http://new-host.com:8080/new-path?foo=bar#section"

示例:解析和生成URL

解析URL

javascript
const url = new URL('https://example.com/path?query=123#section');

console.log(url.href);       // 输出: "https://example.com/path?query=123#section"
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"
console.log(url.search);     // 输出: "?query=123"
console.log(url.hash);       // 输出: "#section"

生成URL

javascript
const url = new URL('https://example.com/path');

// 设置查询参数
url.searchParams.set('query', '123');
url.searchParams.set('foo', 'bar');

// 设置锚点
url.hash = '#section';

console.log(url.href);  // 输出: "https://example.com/path?query=123&foo=bar#section"

总结

URL构造函数是一个非常强大的工具,用于解析和操作URL。它提供了丰富的属性和方法,可以方便地处理URL的各种组成部分。以下是一些关键点:

  1. 创建URL对象:使用new URL(urlString, [baseURL])创建一个URL对象。
  2. 访问和修改URL:使用URL对象的属性(如protocolhostnamesearch等)访问和修改URL的不同部分。
  3. 处理查询字符串:使用searchParams属性处理查询字符串。

希望这些示例和说明对你有所帮助!如果有更多问题或需要进一步的帮助,请随时提问。