如何在javascript中调用动态命名的对象及其方法?

时间:2013-10-15 23:36:32

标签: javascript jquery

我的情况是我的对象名称是动态的..

即。

txtGrantAccess_5.GetValue();

我想知道如何动态调用它?

e.g。

var abcd = 'txtGrantAccess_5';
abcd.GetValue();

请注意txtGrantAccess_5已经存在,请您还避免在答案中使用eval吗?我已经尝试过了解与此类似的其他问题,但它们不是一回事......

3 个答案:

答案 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();