javascript如何实现对window.location对象的赋值操作

javascript如何实现对window.location对象的赋值操作,javascript,Javascript,我是js的新手,最近我了解到,我们可以通过为窗口指定新值来导航到浏览器选项卡中的新页面。location对象类似于:window.location=”https://www.stackoverflow.com“。但我对这个分配操作感到困惑。在javascript中,变量在赋值操作中更改其类型和值。例如,当运行以下程序段时,a的类型将是未定义的,然后是数字,最后是字符串: var a; a = 1; a = "str"; 但是将字符串对象(即url)分配给window.loc

我是js的新手,最近我了解到,我们可以通过为
窗口指定新值来导航到浏览器选项卡中的新页面。location
对象类似于:
window.location=”https://www.stackoverflow.com“
。但我对这个分配操作感到困惑。在javascript中,变量在赋值操作中更改其类型和值。例如,当运行以下程序段时,
a
的类型将是未定义的,然后是数字,最后是字符串

var a;
a = 1;
a = "str";
但是将字符串对象(即url)分配给
window.location
不会改变它的类型,
window.location
仍然是
location
类的一个实例,只是它的一些属性发生了更改(例如
window.location.href
window.location.host
等)。这就像用
window.location.assign()
函数重载“=”操作符一样,但javascript似乎没有提供重载机制。我不知道浏览器(即javascript运行环境)如何实现这一点。如果有人能帮我解决这个问题,我将不胜感激。

这可能是一个setter与
location.assign()
()结合在一起的幕后调用

发件人:
“每当向location对象分配新值时,将使用URL加载一个文档,就像location.assign()”

Sooo有什么问题吗?它只是一个
设置程序
可能:@NurbekBoymurodov问题在于将字符串对象(URL)分配给
窗口.location
,它不会变成字符串对象,而是使用url来更改其属性,就像调用
window.location.assign()
一样。您没有选择最简单的对象来满足您的好奇心;-)从规范本身来看(是的,浏览器等实现者应该遵循的通常是技术性的文本)。位置实际上不是一个合适的JS对象,它是一个DOM对象,稍后会被包装到JS对象中。但这可能比其他任何事情都更让人困惑,所以让我们假装它和其他人一样,只是一个获得者,因为你似乎只对怪物的那一部分感兴趣。@kaido谢谢你的帮助!我花了一些时间阅读WHATWG标准,然后是w3cidl文档,最后找到了答案。将url分配给window.location的行为在中定义,其中对window.location的分配操作是对window.location.href的。感谢您提供线索,以便我可以找到其余的:)