2011-01-30 4 views
19

У меня есть объект JS, как:Как преобразовать строку в качестве имени поля объекта в JavaScript

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

теперь я хочу, чтобы получить доступ к имени поля OBJ, но я могу получить только «имя» строку, так как конвертировать 'имя' в имя поля obj, затем получить результат как obj.name.

Заранее спасибо.

+3

'obj.name' или я пропущу точку вопроса? – mhitza

+0

@mhitza: Может быть, «имя» хранится в переменной, и они хотят получить к ней доступ, как 'obj. <[Оценка_var]>' где '<[оценка_var]>' хранится как «имя»? –

+0

@Brad Christie является правильным. – ywenbo

ответ

42

Вы можете получить доступ к свойствам объекта яваскрипта с помощью индекс т.е.

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) 

Проверьте пример @: http://www.jsfiddle.net/W8EAr/

2

Как объекты являются ассоциативными массивами в javascript, вы можете получить доступ к полю 'name' как obj['name'] или obj[fieldName] где fieldName = 'name'.

8

В Javascript obj.name равнозначно obj['name'], что добавляет необходимую косвенность.

В вашем примере:

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

Это довольно просто, чтобы получить доступ к стоимости объекта с помощью переменной, вы используете квадратные скобки:

var property = 'name'; 
var obj = {name: 'js'}; 
alert(obj[property]); // pops 'js' 
Смежные вопросы