如果我重写' window.URL '会发生什么?

What happens if I override `window.URL`

本文关键字:什么 window 重写 如果 URL      更新时间:2023-09-26

我用JavaScript创建了一个自定义URL对象,并发现Firefox已经在window.URL上有一个类型为MozURL的对象。我没有注意到任何其他浏览器设置window.URL,所以我想知道以下事情:

  • 用我自己的对象重写window.URL是否有任何意想不到的后果
  • window.URL在Firefox中用于什么?
  • 是否有任何其他浏览器也设置window.URL为自己的对象1

我的备份计划当然是使用一个命名空间对象,但是我宁愿能够写new URL()而不是new foo.URL()

[1]当然,这可能会随着浏览器的后续版本而改变,所以请记住在任何答案上注明日期


编辑添加:

我刚想到将对象命名为URI而不是URL,但即使这样,我也可能会坚持使用名称空间,以避免将来可能与URI发生冲突。

这是Firefox 4的新功能,也是W3C文件API工作草案的一部分。

来自文档:

提供用于创建对象url的方法。

你可以改变它;如果你愿意的话——但它可能会成为你以后想要使用的API。这也可能会让其他开发者感到惊讶,URL并不是他们所期望的那样。我建议使用名称空间解决方案。