我的情况是我的对象名称是动态的..
即。
txtGrantAccess_5.GetValue();
我想知道如何动态调用它?
e.g。
var abcd = 'txtGrantAccess_5';
abcd.GetValue();
请注意txtGrantAccess_5已经存在,请您还避免在答案中使用eval吗?我已经尝试过了解与此类似的其他问题,但它们不是一回事......
答案 0 :(得分:2)
您无法动态获取局部变量。但是,如果它是对象的属性,则可以使用[]
语法来获取它。
var obj = {};
obj.foo = function() {};
obj.foo();
obj['foo'](); // same as above.
但在这种情况下,根本无法动态获取局部变量。
var fn = function() {
var foo = '123';
// no way to get foo dynamically.
}
一个例外是全局变量。在全局范围中,局部变量被创建为窗口对象的属性:
// global scope, outside of any function.
var foo = function() {};
window.foo();
window['foo'](); // same as above
请记住,许多全局变量通常都不受欢迎,特别是如果有足够的需要像这样动态查找。你可能只想要一个容器对象来保存这些值,就像我发布的第一个例子一样。
答案 1 :(得分:0)
怎么样:
var container = {};
var name = 'dynamicName';
container[name] = new MyObject();
container[name].getValue()
答案 2 :(得分:0)
试试这个代码段
var abcd = 'txtGrantAccess_5';
this[abcd].GetValue();
但要小心“this”的值。如果它在浏览器中可能会有帮助
var abcd = 'txtGrantAccess_5';
window[abcd].GetValue();