- From: zamfofex <notifications@github.com>
- Date: Tue, 13 Apr 2021 22:31:02 -0700
- To: whatwg/url <url@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/url/issues/354/819239182@github.com>
@JAForbes
> Currently that's possible via Object.assign + stringification, but that's a bit clumsy and not unintuitive.
I’m not really sure why you think it’s not intuitive, but I wanted to mention that you don’t need to make a coercion explicitly, as the `URL` constructor does that automatically.
~~~ diff
- let url2 = Object.assign(new URL(url + ""), {pathname: "/about"})
+ let url2 = Object.assign(new URL(url), {pathname: "/about"})
~~~
In addition, URL objects are mutable, and you only need to actually create a new one if you need a copy of the original.
~~~ diff
- let url2 = Object.assign(new URL(url), {pathname: "/about"})
+ url.pathname = "/about"
~~~
If you don’t want to mutate the original record, but don’t need to use it anymore, at least in that function (e.g. it’s a parameter that you don’t want to mutate), you can reassign it instead.
~~~ diff
- let url2 = Object.assign(new URL(url), {pathname: "/about"})
+ url = new URL(url)
+ url.pathname = "/about"
~~~
Personally, I think the approach of using object spreading is a bit clumsy, as new properties could be added to URL records in the future, maybe just to access and assign existing URL data in a different way (e.g. #491).
Also, I think it’s interesting to note that some databases (and/or their drivers) extend the grammar of URLs beyond what this specification recognizes and allows, see e.g. #398.
I’m also not sure whether it’s actually feasible to turn URL record properties into own properties anymore, and even if it is, I don’t think it would be a good idea, as I think it would be kinda inconsistent.
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/url/issues/354#issuecomment-819239182
Received on Wednesday, 14 April 2021 05:31:14 UTC