我有一种情况,我的对象的名称是动态的..
IE
txtGrantAccess_5.GetValue();
我想知道如何动态调用它?
例如
var abcd = 'txtGrantAccess_5';
abcd.GetValue();
请注意 txtGrantAccess_5 已经存在,请您也避免在答案中使用 eval 吗?我尝试理解其他几乎与此类似的问题,但它们不是一回事......
我有一种情况,我的对象的名称是动态的..
IE
txtGrantAccess_5.GetValue();
我想知道如何动态调用它?
例如
var abcd = 'txtGrantAccess_5';
abcd.GetValue();
请注意 txtGrantAccess_5 已经存在,请您也避免在答案中使用 eval 吗?我尝试理解其他几乎与此类似的问题,但它们不是一回事......
您无法动态获取局部变量。但是,如果它是对象的属性,您可以使用[]
语法获取它。
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
请记住,许多全局变量通常不受欢迎,尤其是如果有足够的变量需要像这样动态地查找。您可能只需要一个容器对象来保存这些值,就像我发布的第一个示例一样。
怎么样:
var container = {};
var name = 'dynamicName';
container[name] = new MyObject();
container[name].getValue()
试试这个片段
var abcd = 'txtGrantAccess_5';
this[abcd].GetValue();
但要小心“this”的值。如果它在浏览器中,也许这会有所帮助
var abcd = 'txtGrantAccess_5';
window[abcd].GetValue();