访问窗口对象中的函数

Accessing functions in the window object

本文关键字:函数 对象 窗口 访问      更新时间:2023-09-26

如果我在控制台中输入:window['alert'],它将找到alert()功能。

但是如果我输入:window['location.replace']

它将是undefined。为什么我不能访问location.replace函数?

replace()是在对象window.locationwindow['location']中找到的函数,因此您必须编写:

window.location.replace

window['location']['replace']

您需要的是window['location']['replace'](或window['location'].replace)。

"的位置。替换"不在"窗口内。相反,"replace"在"location"里面,而"location"在"window"里面。因此,必须按照这个顺序访问。

因为它是一个对象结构,而不仅仅是带有点的名称。您可以通过多种方式访问它:

window.location.replace
window["location"].replace
window["location"]["replace"]

如果您想继续window['alert']的逻辑,请使用window['location']['replace']

当访问window['location.replace']时,您正在访问的属性名称是location.replace,而您想要的是作为window.location引用的对象的.replace属性。

如果你想通过所谓的"对象路径"访问对象,你需要构造一个函数来分割对象路径"location.replace".split('.'),然后使用递归或循环到达你正在寻找的属性。

幸运的是有这样的包,例如object- path可以为你做这项工作,但是当然你需要考虑你是否需要一个完整的外部库(尽管很小)来完成你的任务。

位置函数在窗口下方,但您可以直接使用:location['replace']