Наверняка, многие разработчики, использующие jQuery, сталкиваются в крупных проектах, использующих ООП, с проблемами наследования. Так как самому недавно пришлось озадачиться подобной проблемой, решил написать плагин для jQuery, помогающий в этом нелегком деле. Некоторые идеи заимствованы из Base2.
Где:
Кроме этого, есть несколько «магических» методов:
Как использовать
$.inherit([base], methods, [statical])
* This source code was highlighted with Source Code Highlighter.
Где:
- base — базовый тип (если он есть)
- methods — перекрываемые и новые методы
- statical — статические свойства и методы
«Магические» методы и свойства
Кроме этого, есть несколько «магических» методов:
- __constructor — метод, вызываемый при создании экземпляра
- __base — метод, позволяющий вызвать одноименный метод базового типа
- this.__self — так изнутри можно получить доступ к статическим свойствам и методам
Пример
// Базовый тип
var A = $.inherit(
{
__constructor : function(property) {
this.property = property;
},
getProperty : function() {
return this.property;
},
getStaticProperty : function() {
return this.__self.getStaticProperty();
}
},
{
staticProperty : 'static property of A',
getStaticProperty : function() {
return this.staticProperty;
}
});
// Производный тип от А
var B = $.inherit(
A,
{
getProperty : function() {
return this.__base() + ' in B';
}
},
{
staticProperty : 'static property of B',
});
var instance = new B('value');
alert(instance.getProperty());
alert(instance.getStaticProperty());
alert(B.staticProperty);
* This source code was highlighted with Source Code Highlighter.
Сам плагин можно скачать отсюда.