2011-01-30 15 views
19

Ho un oggetto js come:Come convertire stringa come nome del campo dell'oggetto in javascript

obj = { 
    name: 'js', 
    age: 20 
}; 

ora voglio accedere campo del nome di obj, ma posso solo stringa 'nome', così come converti 'nome' in nome campo obj, quindi ottieni risultato come obj.name.

Grazie in anticipo.

+3

'obj.name' o mi manca il punto della domanda? – mhitza

+0

@mhitza: Forse "nome" è memorizzato in una variabile e vogliono accedervi come 'obj. <[Evaluate_var]>' dove '<[evaluate_var]>' è memorizzato come 'nome'? –

+0

@Brad Christie ha ragione. – ywenbo

risposta

42

È possibile accedere alle proprietà JavaScript oggetto utilizzando il Indice cioè

var obj = { 
    name: 'js', 
    age: 20 
}; 

var isSame = (obj["name"] == obj.name) 
alert(isSame); 

var nameIndex = "name"; // Now you can use nameIndex as an indexor of obj to get the value of property name. 
isSame = (obj[nameIndex] == obj.name) 

Controllare esempio @: http://www.jsfiddle.net/W8EAr/

2

Poiché gli oggetti sono matrici associative in javascript, è possibile accedere al campo "nome" come obj['name'] o obj[fieldName] dove fieldName = 'name'.

8

In Javascript, obj.name equivale a obj['name'], che aggiunge l'indirezione necessaria.

Nel tuo esempio:

var fieldName = 'name' 
var obj = { 
    name: 'js', 
    age: 20 
}; 
var value = obj[fieldName]; // 'js' 
5

E 'abbastanza semplice, per accedere il valore di un oggetto tramite una variabile, è possibile utilizzare le parentesi quadre:

var property = 'name'; 
var obj = {name: 'js'}; 
alert(obj[property]); // pops 'js' 
Problemi correlati