Недавно понадобилось для проекта с jQuery реализовать наследование, написал плагин для jQuery, где релизованы идеи, описанные в «Еще раз о наследовании в JavaScript». Плагин находится на code.google — code.google.com/p/jquery-inheritance/
Работает так:
$.inherit([base], methods, [statical])
Пример:
// A — базовый тип
var A = $.inherit(
{
// __constructor — специальный метод, вызываемый при создании экземпляра
__constructor : function(property) {
this.property = property;
},
getProperty : function() {
return this.property + ' of A';
},
getType : function() {
return 'A';
}
},
{
// статическое свойство, доступное изнутри как this.__self.staticMember
staticMember : 'staticA'
});
// B — тип, наследуемый от A
var B = $.inherit(
A,
{
// перекрытие с вызовом одноименного метода базового класса
getProperty : function() {
return this.__base() + ' of B';
},
// просто перекрытие
getType : function() {
return 'B';
}
},
{
staticMember : 'staticB'
});
var instance = new B('value');
console.log(instance.getProperty());
console.log(instance.getType());
console.log(instance.__self.staticMember);
А кто вообще как использует, и использует ли вообще, наследование?