2010-12-01 10 views
6

क्या रनटाइम पर ऑब्जेक्ट में गुण जोड़ना ठीक है? ऐसा लगता है कि ठीक है लेकिन क्या कोई समस्या है जिसके बारे में मुझे अवगत होना चाहिए?क्या मैं जावास्क्रिप्ट में गतिशील रूप से एक संपत्ति जोड़ सकता हूं?

मैं एक 3 पार्टी जावास्क्रिप्ट एपीआई एक वस्तु वर्ग है, जो मैं इन्स्टेन्शियशन के बाद करने के लिए instantiated और जोड़ दिया है अपने ही संपत्ति है जो उपयोग कर रहा हूँ, नीचे दिए गए कोड की तरह:

उदाहरण के लिए मैं यह कर सकता:

var Car = function (id, type) { 
    this.id = id; 
    this.type = type; 
}; 

var myCar = new Car(1,"Nissan"); 

// CAN I DO THIS: (needsWork not a property of object Car) 
myCar.needsWork = true; 
+1

ध्यान दें, अपने कोड में कार समारोह एक वर्ग नहीं है। यह एक कन्स्ट्रक्टर समारोह है। आप इसे "छद्म-वर्ग" कह सकते हैं। –

+0

धन्यवाद जानना अच्छा है! – capdragon

उत्तर

7

हाँ, इसे ऑब्जेक्ट संवर्धन कहा जाता है। जावास्क्रिप्ट में यह एक प्रमुख विशेषता है।

7

असल में, आप दो तरह से करने के लिए है कि जावास्क्रिप्ट में है:

  1. (इस कार केवल)

    var myCar = new Car(1,"Nissan"); 
    myCar.needsWork = true; 
    
    एक उदाहरण के लिए एक विधि या संपत्ति जोड़ने
  2. कार प्रोटोटाइप (सभी कारें, यहां तक ​​कि पहले से मौजूद) में एक विधि या संपत्ति जोड़ें

    var myCar = new Car(1, "Nissan"); 
    var biggerCar = new Car(2, "Hummer"); 
    Car.prototype.needsWork = true; 
    alert(myCar.needsWork && biggerCar.needsWork 
         ? "We need work" 
         : "Something wrong here" 
    ); 
    

संदर्भ:

+0

धन्यवाद मैं प्रोटोटाइप के बारे में जानता था, मैं बस सोच रहा था कि पहला विकल्प ठीक है या नहीं। अगर मैं 2 उत्तरों को चिह्नित कर सकता हूं तो मैं चाहता हूं। जानकारी के लिए धन्यवाद। – capdragon

+0

कोई प्रोब, अपवॉट्स स्वीकार करने से वास्तव में बेहतर हैं। केवल अपवॉट्स आपको बैज टैग करते हैं :-) –

+0

पी। फ्लॉइड मुझे लगता है कि ऑब्जेक्ट के गैर-फ़ंक्शन गुणों को स्वयं ('this.needsWork = true' कन्स्ट्रक्टर के अंदर) संलग्न करना बेहतर है, फिर ऑब्जेक्ट के प्रोटोटाइप पर। –

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

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