// Базовый класс
function Class(bc,c,i)
{
var l=function(){};
l.prototype=bc.prototype;
var cc=c;
cc.base=new l();
cc.prototype=new l();
i.call( cc.prototype );
cc.prototype.constructor=cc;
return cc;
}
// Пример расширения
var MyClass = Class(
//Base class
BaseClass,
//Constructor
function( a, b )
{
base.constructor.call( this );
this.a = a;
this.b = b;
},
//Implementation
function()
{
this.someMethod = function( a )
{
// call method from base class;
return base.someMethod.call( this, a );
}
this.callPrivate = function()
{
// call private method
privateMethod.call( this );
}
// private method
var privateMethod = function()
{
return this.a + this.b;
}
}
);
// Использование
var obj = new MyClass( 1, 2 );
obj.someMethod();
obj.callPrivate(); // вернет 1+2 переданные в конструкторе
// obj.privateMethod(); - даст ошибку