2011-01-30 15 views
19

में वस्तु के क्षेत्र नाम के रूप में स्ट्रिंग परिवर्तित करने के लिए मैं एक js वस्तु है की तरह:कैसे जावास्क्रिप्ट

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

मैं obj के नाम क्षेत्र तक पहुँचने के लिए चाहते हैं, लेकिन मैं केवल स्ट्रिंग 'नाम' कैसे करने के लिए मिलता है, तो कर सकते हैं 'name' को obj के फ़ील्ड नाम में कनवर्ट करें, फिर obj.name जैसे परिणाम प्राप्त करें।

अग्रिम धन्यवाद।

+3

'obj.name' या क्या मुझे प्रश्न का मुद्दा याद आ रहा है? – mhitza

+0

@ मिहट्ज़ा: शायद "नाम" एक चर में संग्रहीत है और वे इसे 'obj। <[मूल्यांकन_var]>' जहां '<[मूल्यांकन_var]> 'को' नाम 'के रूप में संग्रहीत किया जाता है? –

+0

@ ब्रैड क्रिस्टी सही है। – ywenbo

उत्तर

42

आप का उपयोग कर जावास्क्रिप्ट ऑब्जेक्ट के गुणों को एक्सेस कर सकते हैं:

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

के रूप में वस्तुओं साहचर्य सरणियों जावास्क्रिप्ट में आप obj['name'] या obj[fieldName] जहां fieldName = 'name' के रूप में 'नाम' क्षेत्र का उपयोग कर सकते हैं।

8

जावास्क्रिप्ट में, obj.nameobj['name'] के बराबर है, जो आवश्यक संकेत जोड़ता है।

अपने उदाहरण में:

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

यह एक चर के माध्यम से एक वस्तु के मूल्य का उपयोग करने की, काफी सरल है, तो आप वर्गाकार कोष्ठकों का उपयोग सूचकांक यानी

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/

संबंधित मुद्दे