मैं कुछ कोड के पुन: उपयोग को अधिकतम करने की कोशिश कर रहा हूं। अपने कस्टम जावास्क्रिप्ट वस्तु पर (मैं सरलता के लिए एक उदाहरण के रूप में PhoneNumber इस्तेमाल करेंगे), मैं इस तरह एक प्रोटोटाइप समारोह की स्थापना कर रहा हूँ:जावास्क्रिप्ट कस्टम ऑब्जेक्ट जेनेरिक
var Map = {
write: function() {
alert('My object is ' +this);
}
};
function PhoneNumber(number) {
this.number = number;
}
PhoneNumber.prototype = Map;
//I can call the write function like so
var phoneObject = new PhoneNumber('1234567894');
phoneObject.write(); //ALERT My Object is Object{number:'1234567894'}
सब कुछ तथ्य यह है कि किसी कारण से यह बदल जाता है के अलावा ठीक काम करता है मेरा फोन नंबर ऑब्जेक्ट अपने फोन नम्बर कन्स्ट्रक्टर को रखने के बजाए एक सामान्य ऑब्जेक्ट में। यदि मैं वास्तव में इस तरह के प्रोटोटाइप वस्तुओं के अंदर लेखन समारोह डालता हूं, तो यह पूरी तरह से काम करता है।
function PhoneNumber(number) {
this.number = number;
}
PhoneNumber.prototype.write = function() {
alert('My object is ' +this);
}
var phoneObject = new PhoneNumber('1234567894');
phoneObject.write(); //ALERT My object is PhoneNumber{number:'1234567894'}
लेकिन मैं वास्तव में नहीं बल्कि क्योंकि एक से अधिक ऑब्जेक्ट लिखने फ़ंक्शन का उपयोग करें और वे सब ठीक उसी तरह से प्रदर्शन करते हैं यह इस तरह से करने की जरूरत नहीं होगी। मैं अपने ऑब्जेक्ट्स को सामान्य रचनाकारों में परिवर्तित करने से कैसे बच सकता हूं? जाहिर है, मैं मैप ऑब्जेक्ट को प्रोटोटाइप पर गलत तरीके से सेट कर रहा हूं, लेकिन यह काफी महत्वपूर्ण है कि मुझे सीधे कोड से ऑब्जेक्ट प्रोटोटाइप फ़ंक्शन में कोड कॉपी करने की आवश्यकता नहीं है। कोई विचार?
यह साबित होता है PhoneNumber नक्शे से विरासत होना चाहिए नीचे, और 'Object.create' जाने का सही तरीका है। QED :) – Kos