访问窗口对象中的函数
Accessing functions in the window object
如果我在控制台中输入:window['alert']
,它将找到alert()
功能。
但是如果我输入:window['location.replace']
它将是undefined
。为什么我不能访问location.replace
函数?
replace()
是在对象window.location
或window['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']
- 在javascript中调用函数/对象引用时,可容纳任何数据类型
- 访问函数对象的上下文属性|如何
- 为什么可以'我们在函数体中为函数对象添加属性,就像在javascript中为对象文字添加属性一样
- 如何将函数对象从javascript传递到Polymer元素
- 为什么函数对象的实例没有继承函数原型属性
- 为什么我会从 JavaScript 函数返回一个命名函数(对象)
- 为什么实例构造函数指向最上面的函数构造函数对象
- 使用object.freeze()扩展函数对象-can't添加字段
- 为什么'这'与函数对象一起使用时会有不同的处理方式
- setTimeout()/setInterval()赢得't执行**我正在传递函数对象,而不是执行函数
- 为什么茉莉花间谍不't通过引用解析函数对象
- 在 mongo map 中调用外部 javascript 函数(对象)或减少上下文的可能方法
- 在 JavaScript 中为函数对象添加别名
- 在 Express JS 中从路由调用函数对象
- 函数对象的名称属性是什么
- 构造函数对象
- 节点.js - 从另一个函数/对象发出事件
- 声明函数是否会创建具有函数名称和分配给它的函数对象的变量
- 函数对象__proto__和原型属性
- 类仿真 - 模块模式与函数对象