Javascript的Python等价于当地人()?
在Python中,可以使用内置函数locals()
和globals()
来获取当前范围内所有本地和全局变量的字典。 是否有一些在Javascript中做到这一点的等价方法? 例如,我想要做如下的事情:
var foo = function(){ alert('foo'); };
var bar = function(){ alert('bar'); };
var s = 'foo';
locals()[s](); // alerts 'foo'
这是否可能,或者我应该使用本地对象进行查找?
当地人() - 不。
全局变量() - 是的。
window
是对全局作用域的引用,例如python中的globals()
。
globals()["foo"]
是相同的:
window["foo"]
那么,我认为js中没有这样的东西。 你总是可以使用eval而不是locals()。 喜欢这个:
eval(s+"()");
你只需要知道函数foo的存在。
编辑:
不要使用eval :)使用:
var functionName="myFunctionName";
window[functionName]();
我似乎记得Brendan Eich在最近的播客中对此进行了评论; 如果我记得正确的话,这不会被考虑,因为它增加了不合理的优化限制。 他将它与当地的arguments
进行比较,虽然它对可变参数很有用,但它的存在无法通过查看它的定义来猜测函数会触及什么。
顺便说一句:我相信JS确实支持通过本地参数访问当地人 - 一次快速搜索显示,这已被弃用。
链接地址: http://www.djcxy.com/p/16985.html