मुझे डर है कि आपका उदाहरण आपके सोचने के तरीके पर काम नहीं करता है। यह भाग:
this.do = function(){ /*do something*/ };
की परिभाषा को ओवरराइट करता है
MyClass.prototype.do = function(){ /*do something else*/ };
चूंकि नई बनाई गई वस्तु में पहले से ही "डू" संपत्ति है, इसलिए यह प्रोटोटाइप चेन नहीं दिखता है।
जावास्क्रिप्ट में विरासत का शास्त्रीय रूप अजीब है, और पकड़ना मुश्किल है। मैं इसके बजाय डगलस क्रॉकफोर्ड सरल विरासत पैटर्न का उपयोग करने का सुझाव दूंगा। ऐशे ही:
function my_class(name) {
return {
name: name,
do: function () { /* do something */ }
};
}
function my_child(name) {
var me = my_class(name);
var base_do = me.do;
me.do = function () {
if (this.name === 'something'){
//do something new
} else {
base_do.call(me);
}
}
return me;
}
var o = my_child("something");
o.do(); // does something new
var u = my_child("something else");
u.do(); // uses base function
मेरी राय में, जावास्क्रिप्ट में ऑब्जेक्ट्स, कंस्ट्रक्टर और विरासत को संभालने का एक बहुत स्पष्ट तरीका है। आप Crockfords Javascript: अच्छे भागों में अधिक पढ़ सकते हैं ।