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

时间:2019-04-26 12:14:45

标签: javascript url

我想使用URL对象从零件中手动构造URL。

但是,它的构造函数要求将正确的URL字符串传递给它,这不允许从空对象开始逐步构建它。

  1. 有没有办法克服这种限制?
  2. 首先导致这种设计决策的原因是什么?

2 个答案:

答案 0 :(得分:2)

您已经找到了解决方法,除了将这些部分传递或以URL开头并对其进行变异之外,没有其他选择。

我会尝试回答:

  

首先造成这种设计决定的原因是什么?

到目前为止,URL的最常见用例是从URL字符串创建URL。实际上有人最终asking for the API you are describing in the URL spec结束了,讨论几乎停滞了。

我们have an API in Node.js用于从各个部分构造URL-但这会创建一个字符串,仍然需要传递给URL构造函数。

所以这可能不是一个好主意,并且目前被某人实际从事添加该功能的工作所阻止。

答案 1 :(得分:1)

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

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

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

console.log(url.toString()); // outputs: http://google.com/

但是,此用例仍然很麻烦。