2010-06-30 12 views
55

के लिए चर का उपयोग कर ऑब्जेक्ट बनाएं ऑब्जेक्ट सृजन के लिए ऑब्जेक्ट शाब्दिक गुणों में चर नामों का उपयोग करना संभव है?संपत्ति नाम

उदाहरण

function createJSON (propertyName){ 
    return { propertyName : "Value"}; 
} 

var myObject = createJSON("myProperty"); 

console.log(myObject.popertyName); // prints "value" 
console.log(myObject.myProperty); // Does not exist 

उत्तर

113

, तो ES6 में, आप एक संपत्ति के नाम के लिए एक चर का उपयोग करना चाहते, तो आप नए ComputedPropertyName सिंटैक्स का उपयोग कर सकते हैं। वर्ग कोष्ठक के बीच चर नाम रखें:

var foo = "bar"; 
var ob = { [foo]: "something" }; // ob.bar === "something" 

ES5, आपको पहले वस्तु बनाने के लिए, और फिर संपत्ति square bracket notation का उपयोग कर जोड़ने की है।

var foo = "bar"; 
var ob = {}; 
ob[foo] = "something"; // === ob.bar = "something" 

आप प्रोग्राम के JSON बनाना चाहता था, तो आप एक स्ट्रिंग JSON प्रारूप के अनुरूप करने के लिए वस्तु को क्रमानुसार करने के लिए होगा। जैसे the JSON.stringify method के साथ।

+0

धन्यवाद! मैं वास्तव में इस पर अपने सिर झुका रहा था। – Jpsh

6

आप एक तरह से यह कर सकते हैं:

var myObject = {}; 
    CreateProp("myProperty","MyValue"); 

    function CreateProp(propertyName, propertyValue) 
    { 
     myObject[propertyName] = propertyValue; 
     alert(myObject[propertyName]); // prints "MyValue" 
    }; 

मैं बहुत perfer इस अपने आप को हालांकि सिंटेक्स:

SaveJsonObject(); 
var myNoteJSON = JSON.stringify(myNoteObject); 

नोट::

function jsonObject() 
{ 
}; 
var myNoteObject = new jsonObject(); 

function SaveJsonObject() 
{ 
    myNoteObject.Control = new jsonObject(); 
    myNoteObject.Control.Field1= "Fred"; 
    myNoteObject.Control.Field2= "Wilma"; 
    myNoteObject.Control.Field3= "Flintstone"; 
    myNoteObject.Control.Id= "1234"; 
    myNoteObject.Other= new jsonObject(); 
    myNoteObject.Other.One="myone"; 
}; 

तो आप निम्न का उपयोग कर सकते यह यहां से json2.js का उपयोग करता है: http://www.json.org/js.html

4

एक चीज जो उपयुक्त हो सकती है (अब जेएसओएन कार्यक्षमता नए ब्राउज़र के लिए आम है, और json2.js एक पूरी तरह से वैध फॉलबैक है), JSON स्ट्रिंग का निर्माण करना है और फिर इसे पार्स करना है।

function func(prop, val) { 
    var jsonStr = '{"'+prop+'":'+val+'}'; 
    return JSON.parse(jsonStr); 
} 

var testa = func("init", 1); 
console.log(testa.init);//1 

बस ध्यान रखें, JSON संपत्ति के नाम डबल उद्धरण में संलग्न करने की आवश्यकता है।

35

ES6 परिकलित प्रॉपर्टी नामों, जो आप

function CreateJSON (propertyName){ 
    var myObject = { [propertyName] : "Value"}; 
} 

नोट ब्राउज़र समर्थन वर्तमान में नगण्य है ऐसा करने की अनुमति परिचय देता है।

+0

दिलचस्प, ब्राउज़र समर्थन पर कोई अपडेट? – Ayyash

+0

जब मैंने जवाब लिखा, केवल फ़ायरफ़ॉक्स निगली। अब [एमडीएन] के अनुसार फ़ायरफ़ॉक्स 34+ और सफारी 7.1.3+ (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#Browser_compatibility)। – Oriol

+0

यह मेरे लिए सबसे अच्छा जवाब है। मैं नोडज का उपयोग कर रहा हूँ। – James

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