在 JavaScript 中从头开始创建空 URL 对象

Sla*_* II 7 javascript url

我想使用URL对象从部分手动构建 URL 。

然而,它的构造函数需要一个正确的 URL 字符串传递给它,这不允许从空对象开始并逐步构建它。

  1. 有没有办法以某种方式克服这个限制?
  2. 首先是什么导致了这样的设计决定?

Sla*_* II 5

到目前为止,我发现的唯一解决方法是使用最小的正确 URL 来初始化对象,然后覆盖它的部分(即协议和主机)。

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

url.protocol = 'http';
url.host = 'google.com';

console.log(url.toString()); // outputs: http://google.com/
Run Code Online (Sandbox Code Playgroud)

然而,对于这个用例来说它仍然很麻烦。


Ben*_*aum 5

您已经找到了解决方法,除了将部分传入或以 URL 开头并对其进行变异之外别无选择。

我会试着回答:

首先是什么导致了这样的设计决定?

到目前为止,最常见的 URL 用例是从 URL 字符串创建 URL。确实有人最终要求提供您在 URL 规范中描述的 API,并且讨论大多停滞不前。

我们在 Node.js 中有一个用于从部分构造 URL的 API - 但这会创建一个仍然需要传递给 URL 构造函数的字符串。

因此,这可能不是一个坏主意,并且目前正在阻止实际执行添加该功能的工作的人