我在其中我對象的名稱將是動態的情況..如何在JavaScript中調用一個動態命名的對象及其方法?
即
txtGrantAccess_5.GetValue();
,我想知道我怎麼能動態調用嗎?
例如
var abcd = 'txtGrantAccess_5';
abcd.GetValue();
請注意,txtGrantAccess_5已經存在,請你也可以避免在你的答案中使用eval嗎?我試圖理解幾乎與此類似的其他問題,但它們是不一樣的東西......
我在其中我對象的名稱將是動態的情況..如何在JavaScript中調用一個動態命名的對象及其方法?
即
txtGrantAccess_5.GetValue();
,我想知道我怎麼能動態調用嗎?
例如
var abcd = 'txtGrantAccess_5';
abcd.GetValue();
請注意,txtGrantAccess_5已經存在,請你也可以避免在你的答案中使用eval嗎?我試圖理解幾乎與此類似的其他問題,但它們是不一樣的東西......
試試這個片斷
var abcd = 'txtGrantAccess_5';
this[abcd].GetValue();
但要小心的價值「這個」。如果它在瀏覽器中,也許這將有助於
var abcd = 'txtGrantAccess_5';
window[abcd].GetValue();
您不能動態獲取本地變量。但是,如果它是對象的屬性,則可以使用[]
語法獲得它。
var obj = {};
obj.foo = function() {};
obj.foo();
obj['foo'](); // same as above.
但是在這種情況下,根本不能動態獲取局部變量。
var fn = function() {
var foo = '123';
// no way to get foo dynamically.
}
一個例外是全局變量。在全球範圍內,局部變量創建爲window對象的屬性:
// global scope, outside of any function.
var foo = function() {};
window.foo();
window['foo'](); // same as above
只要記住,大量的全局變量通常是令人難以接受的,espcially是否有足夠的,你需要動態地找到這樣。您可能只想要一個容器對象來保存這些值,就像我發佈的第一個示例一樣。
你的意思是你將有一個你不知道的名字的全局變量? – promanski
如果您不知道函數的存儲位置,那麼'eval'是唯一的選項。 – iConnor
你會如何知道這個動態命名變量的名字? – Musa