Есть конечно)) эту функцию писали профессионалы javascript)
this
.super() внутри дочернего метода вызовет перекрытый мтеод родителя
function Class(g,h){var d=h||g,a=h?g:null,e=Class.overname||"super",f=function(){if(this.__construct__)return this.__construct__.apply(this,arguments)},i=function(){};i.prototype=a?a.prototype:Class.prototype;d.prototype=new i;f.prototype=new d(f,d.prototype);var c=f.prototype,b;for(b in c)c.hasOwnProperty(b)&&c[b]instanceof Function&&(a=d.prototype[b])&&function(b,d,a){c[a]=function(){var a=this[e];this[e]=d;var c=b.apply(this,arguments);a?this[e]=a:delete this[e];return c}}(c[b],a,b);return f};
var Animal = new Class( function () {
this.run = function () {
alert( 'this run!' )
};
} );
var Cat = new Class( Animal, function () {
this.run = function (){
this.super(); // вызываем родительский перекрытый
alert('...and jump!' ) // добавляем коту дополнительный функционал
};
} );
var cat = new Cat;
cat.run(); // 'this run!' // '...and jump!'
п.с. вот это вот слово super можно задавать в
Class.overname = 'trololo' если слово super не устраивает))
И кстати
cat instanceof Cat // true
cat instanceof Animal // true
cat instanceof Class // true
А так же
Class.prototype.qq = 11;
Animal.prototype.ww = 77;
cat.qq // 11
cat.ww // 77
ну ты понял
я же говорю это обычная обертка над прототипным наследованием)))) просто дико удобная