जावास्क्रिप्ट में एक वस्तु बनाना समर्थित हो सकता है (और हम सभी को कॉपी करने से बच सकते हैं) ने अपने निर्माता के आह्वान की आवश्यकता है । तो, सबसे पहले आपको सही तर्क खोजने की आवश्यकता होगी, जो हमेशा गुण नहीं हो सकता है। इसके बाद, आप जेएसओएन-पार्स ऑब्जेक्ट से बनाए गए उदाहरणों में सभी सार्वजनिक गुणों को फिर से सौंप सकते हैं।
एक सामान्य समाधान यह होगा कि प्रत्येक कन्स्ट्रक्टर किसी भी ऑब्जेक्ट को स्वीकार करता है जो उदाहरणों (असली उदाहरणों सहित) को देखता है और उन्हें क्लोन करता है। उचित उदाहरण बनाने के लिए आवश्यक सभी आंतरिक तर्क सही जगह पर स्थित होंगे।
Person.fromJSON = function(obj) {
// custom code, as appropriate for Person instances
// might invoke `new Person`
return …;
};
आपका मामला, बहुत सरल है के रूप में आप डॉन ':
या निर्माता अधिक भार से भी बेहतर अपने वर्ग कि उन लोगों से वस्तुओं लेता है और बनाता है उदाहरणों पर एक स्थिर विधि बनाने के लिए हो सकता है टी में कोई तर्क नहीं है और केवल सार्वजनिक गुण हैं।एक वस्तु उदाहरण के लिए {personName:John,animals:[]}
बदलने के लिए, इस का उपयोग करें:
var personLiteral = ... // JSON.parse("...");
var personInstance = new Person();
for (var prop in personLiteral)
personInstance[prop] = personLiteral[prop];
आप भी इस के लिए Object.extend
कार्यक्षमता का उपयोग कर सकते हैं, तो आप एक ही उपलब्ध (उदाहरण के लिए jQuery) होना चाहिए:
var personInstance = $.extend(new Person(), personLiteral);
Animal
उदाहरणों के निर्माण समान काम करता है।
चूंकि जेएसओएन कक्षाओं के बारे में कोई जानकारी नहीं लेता है, तो आपको पहले संरचना को अवश्य जानना चाहिए। आपके मामले में यह हो जाएगा:
var persons = JSON.parse(serverResponse);
for (var i=0; i<persons.length; i++) {
persons[i] = $.extend(new Person, persons[i]);
for (var j=0; j<persons[i].animals; j++) {
persons[i].animals[j] = $.extend(new Animal, persons[i].animals[j]);
}
}
Btw, अपने run
तरीकों प्रत्येक उदाहरण के बजाय Animal.prototype
वस्तु पर जोड़े जाने की संभावना लगती है।
आपका प्रश्न अस्पष्ट है। जावास्क्रिप्ट सरणी टाइप नहीं की जाती हैं। (वैसे नई टाइप-जैसी चीजें हैं जिन्हें टाइप किया गया है लेकिन मूल सरणी नहीं हैं।) – Pointy
वह कोड जो आप कहते हैं कि आप उपयोग करना चाहते हैं, इसका तात्पर्य है कि सर्वर से पुनर्प्राप्त करने वाले व्यक्ति सरणी में ऑब्जेक्ट्स होंगे, उदा। '[{पशु: [...]}, {पशु: [...]}] '- क्या आपका मतलब है? – JMM
मैंने नमूना कोड जोड़ा है। मुझे लगता है कि सवाल अब स्पष्ट है। – ozz