2009-09-17 50 views
9

W ten sposób mógłbym mieć funkcję, która mówi what_way_you_do_this = something. czy to możliwe? Zasadniczo mogłem powiedzieć funkcji, którą zmienną chcę ustawić, nadając jej ciąg zawierający nazwę zmiennej.Czy istnieje sposób dostępu do zmiennej javascript za pomocą ciągu znaków zawierającego nazwę zmiennej?

Dzięki

+0

Nie jest duplikatem "Pobierz zmienną globalną dynamicznie według ciągu nazw w JavaScript", to pytanie nie mówi nic o zmiennej, która jest globalna. I to ma znaczenie. –

Odpowiedz

20

Dane:

var x = { 
    myproperty: 'my value' 
}; 

Można uzyskać dostęp do wartości poprzez:

var value = x['myproperty']; 

Jeśli y szukasz globalnej zmiennej, to możesz sprawdzić jej kontener (window);

var value = window['x']['myproperty']; 
3

Jeśli jest to zmienna globalna o nazwie myVar, można użyć:

window["myVar"] 
+1

Aby rozwinąć: function setGlobal (varName, varValue) {window [varName] = varValue; } –

6

Można użyć

eval(variableString); 

postępować ostrożnie, gdyż wielu nie zalecamy stosowania eval()

+0

Bardziej wszechstronna odpowiedź. Aktualna najlepsza odpowiedź może tylko uzyskać dostęp do właściwości. To może uzyskać dostęp zarówno do zwykłych zmiennych i właściwości 'eval (" x.myproperty ");'. Z ciekawości, dlaczego eval nie jest zalecany? –

+1

Zabezpieczenie @BryantJackson to jeden wielki powód, naprawdę nie chcesz tworzyć możliwości dowolnego wykonania kodu na maszynie produkcyjnej – nickford

2

funkcji eval może uzyskać dostęp do zmiennej z ciągiem zawierającym nazwę zmiennej.

eval('baseVariableName'+index) = 'something'; 
Powiązane problemy