ฉันเกรงว่าตัวอย่างของคุณไม่ได้ผลอย่างที่คุณคิด ส่วนนี้:
this.do = function(){ /*do something*/ };
เขียนทับนิยามของ 
MyClass.prototype.do = function(){ /*do something else*/ };
เนื่องจากวัตถุที่สร้างขึ้นใหม่มีคุณสมบัติ "do" อยู่แล้วจึงไม่ค้นหาห่วงโซ่ต้นแบบ 
รูปแบบคลาสสิกของการสืบทอดใน Javascript นั้นน่ากลัวและยากที่จะเข้าใจ ฉันขอแนะนำให้ใช้รูปแบบการสืบทอดแบบง่ายๆของ Douglas Crockfords แทน แบบนี้:
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: ส่วนที่ดี