答案 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/
但是,此用例仍然很麻烦。