classes
Version:
A classical inheritence model with support for mixins
99 lines (70 loc) • 1.6 kB
HTML
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-us" lang="en-us">
<head>
<!-- Data Tags -->
<title>class.js</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div id="wrapper">
</div>
<!-- JavaScript Includes -->
<script type="text/javascript" charset="utf-8" src="classes.js"></script>
<script type="text/javascript">
/**
* @class A
*/
Class('A', {
construct: function() {
console.log('Building an instance of ' + this.__class__);
},
method: function() {
console.log('Inside A::method as ' + this.__class__);
}
});
/**
* @class B
*/
Class('B').Extends('A', {
method: function() {
console.log('Inside B::method as ' + this.__class__);
this.method.parent(this);
}
});
/**
* @class C
*/
Class('C').Extends('B', {
method: function() {
console.log('Inside C::method as ' + this.__class__);
this.method.parent(this);
}
});
/**
* @class D
*/
Class('D').Extends('C', {
method: function() {
console.log('Inside D::method as ' + this.__class__);
this.method.parent(this);
}
});
/**
* @mixin CanFoo
*/
Class.mixin('CanFoo', {
foo: function() {
console.log('Foo!');
}
});
/**
* @class Fooer
*/
Class('Fooer').Uses(['CanFoo'], {
bar: function() {
console.log('Bar!');
}
});
</script>
</body>
</html>