Очередное обновление.
Добавлена возможность множественного наследования, так же внесены изменения во входные параметры.
Так же добавлен параметр
Class.defaultContext в который вы можете указать объект, куда по умолчанию будут складываться все созданные классы, у которых явно не указан контекст.
Объявлять классы как обычно можно:
Class("Foo", {
// code
});
если нужны указать дополнительные параметры, это теперь можно сделать так:
Class("Foo", {
// контекст в котором будет создан класс
context: window,
// строка/конструктор от которого будем наследоваться
extends: "Bar",
// строка/конструктор или список строк/конструкторов, из которых будут получены дополнительные свойства
implements: [ "IBase", "IPersistent" ],
// статические параметры
static: {
STATIC_PARAM: 1,
STATIC_CONST: "lala"
}
}, {
// code
});
Пример:
<script type="text/javascript" src="https://github.com/devote/jsClasses/raw/master/core.class.min.js"></script>
<script type="text/javascript">
Class("Foo", {
foo: function(){
alert( this.__class__.className );
},
"get name": function() {
return "this Foo name";
}
});
Class("Bar", {
bar: function(){
alert( this.__class__.className );
},
"get name": function() {
return "this Bar name";
}
});
Class("Tre", Foo, {
trefoo: function(){
alert( this.__class__.className );
}
});
Class("Mix", {
extends: "Tre",
implements: "Bar"
}, {
});
var a = new Mix();
a.foo();
a.bar();
a.trefoo();
alert( a.name );
</script>
или так:
<script type="text/javascript" src="https://github.com/devote/jsClasses/raw/master/core.class.min.js"></script>
<script type="text/javascript">
Class("Foo", {
foo: function(){
alert( this.__class__.className );
},
"get name": function() {
return "this Foo name";
}
});
Class("Bar", {
bar: function(){
alert( this.__class__.className );
},
"get name": function() {
return "this Bar name";
}
});
Class("Tre extends Foo", {
trefoo: function(){
alert( this.__class__.className );
}
});
Class("Mix extends Tre, Bar", {
});
var a = new Mix();
a.foo();
a.bar();
a.trefoo();
alert( a.name );
// или
Class("Mix2", "Tre, Bar", {
});
var a = new Mix2();
a.foo();
a.bar();
a.trefoo();
alert( a.name );
</script>