我知道你可以使用像Object['property']
之类的变量访问javascript中对象的属性,但我也想使用变量访问对象。
// The object and his function
var Foo = {};
Foo.bar = function() { console.log("I am a useful function dood"); }
// The accessors
var obj = 'Foo';
var method = 'bar';
但是,当我按照我认为正确的方式尝试时,我得到以下内容。由于世界上的所有链接似乎都是关于使用变量访问对象属性,我似乎无法筛选一个访问这样的对象。
typeof obj // "object"
typeof Foo[method] // "function"
typeof [obj].foo // undefined
typeof [obj][method] // undefined <-- This is what I'm trying to use
我能够像这样访问对象吗?
修改
根据答案,如果对象是全局范围的,我可以使用window[obj][method]
,但上面包含在一个立即调用的函数中,如下所示:
(function(){
// The stuff from above...
})();
这项工作我是否必须将其放入一个全局范围内的可识别变量?
PS我永远不会使用eval();
答案 0 :(得分:1)
如果您的Foo
对象位于全局对象,则:
window[obj][method]()
//我是一个有用的函数dood`
否则,您需要提供更多信息。