JavaScript反射:获取变量

4

如何在javascript中获取全局和/或局部变量的集合?

(例如,像Python中的globals()locals()

如果javascript中没有这样的功能,一些javascript控制台界面如何获取它们以便自动完成?


这里我找到了一个非常相似的问题:https://dev59.com/Tm865IYBdhLWcg3wZdxW - mykhal
1个回答

4
你正在寻找for / in循环。
要获取所有全局变量:
for(var name in this) {
    var value = this[name];
    //Do things
}

只有在全局作用域中运行时,此方法才能正常工作;您可以将其包装在匿名函数中以确保这一点。但是,请注意with块。

要获取特定对象的所有属性:

for(var name in obj) {
    //Optionally:
    if (!obj.hasOwnProperty(name)) continue;    //Skip inherited properties

    var value = obj[name];
    //Do things
}

然而,没有办法循环遍历所有的本地变量。


好的,这是一个对象内省,不完全是我所要求的。但对于浏览器环境反射肯定很有用。 - mykhal
那么你在问什么? - SLaks
SLaks:如果这是情况的话(在我撰写前一个评论的时候还没有),那么你指出不可能会足够了。 - mykhal
2
如果没有 window 对象,你可以在全局作用域中使用 this - SLaks
我担心“this”会干扰jQuery的行为。 - mykhal
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接