HClass
Description
The extended object model.HClass is the foundation class of all other classes. It implements a proper object oriented environment in Javascript. It supports inheritance (HClass.extend), superclass invocation ( this.base ), interfaces (HClass.implement) and such.
It's derived from and backwards compatible with Dean Edward's Base.js, so you can mix and match code written against Base.js.
It is intended for the following main purposes:
• To easily create classes without the MyClass.prototype cruft
• Method overriding with intuitive access to the overridden method (like Ruby's super)
• To avoid calling a class' constructor function during the prototyping phase
• To easily add static (class) properties and methods
• To achieve the above without resorting to global functions to build prototype chains
• To achieve the above without affecting Object.prototype
The HClass class extends the 'Object' object by adding one instance method (base) and two class methods (extend, implement). Instance method extend can be also called directly.
Inherits from:
- HClass < Object
Extended by:
- SHA
- HApplication
- HControlDefaults
- HDummyValue
- COMM.JSONRenderer
- HMarkupView
- HView
- HDateTime
- HValue
- COMM.JSLoader
- HViewDefaults
- COMM.Session
- HMorphAnimation
- HPoint
- HValueMatrix
- HRect
- HEventResponder
- HThemeManager
- HValueResponder
- COMM.Values
Constructor Method
The constructor is invoked, when a new instance of HClass is created.
To create a new instance use HClass.nu( ) or new HClass( ).
constructor( )
Protected instance method, gets called when a new instance is created.
Class Methods
implement( interface )
Description
Copies the members of interface to a HClass or a class inherited from HClass.Usage:
Defines an interface:// Create an interface class that calculates the area var AreaInterface = HClass.extend({ constructor: null, area: function() { return this.getWidth() * this.getHeight(); } });// Create a class that contains the coordinates of a rectangle. var Rectangle = HClass.extend({ constructor: function( x, y, width, height ) { this.x = x; this.y = y; this.width = width; this.height = height; }, getWidth: function() { return this.width; }, getHeight: function() { return this.height; } });
// Makes the Rectangle class implement the AreaInterface Rectangle.implement( AreaInterface );
nu( )
Class members:
Description
nu is a protected class method.
It does the same thing as the new keyword, but it is a class method.
Parameters:
Any parameters are passed on to theconstructor method.
Usage:
Creates a classMyClass, then creates two instances of it:
myClassInstance1 and myClassInstance2. The end result is the same.
var MyClass = HClass.extend({ name: 'Foo', constructor: function( param1, param2 ){ var logMsg = [ 'param1:', param1, 'param2:', param2, 'name:', this.name ]; console.log( logMsg.join(' ') ); } });
// Construction using the new keyword: var myClassInstance1 = new MyClass( 'one', 'two' );
// Construction using the nu method: var myClassInstance2 = MyClass.nu( 'one', 'two' );However, when extending in place, the benefits of the
nu method
become obvious.
// Extending in place with the new keyword: var myExtendedClassInstance1 = new ( MyClass.extend({ name: 'Bar' }) )( 'one', 'two' );
// The same as above, but using the nu method: var myExtendedClassInstance2 = MyClass.extend({ name: 'Bar' }).nu( 'one', 'two' );
extend( instance, static )
Description
The class method used to extend a class.If the member name constructor is defined as null instead of a function
block in the instance object block, the class is defined as a singleton
(single instance class).
Parameters:
instance |
The object that defines the class instance members. |
|---|---|
static |
The object that defines the static class members. |
Returns:
Returns the extended class object.Usage:
var Point = HClass.extend({ constructor: function( x, y ) { this.x = x; this.y = y; } }); var Rectangle = Point.extend({ // Instance members: constructor: function( x, y, width, height ) { this.base( x, y ); this.width = width; this.height = height; }, getWidth: function() { return this.width; }, getHeight: function() { return this.height; } }, // Class Members { description: "this is a Rectangle", getClass: function() { return this; } });
Instance Methods
toString( )
Protected instance method, returns the instance represented as a String.
valueOf( )
Protected instance method, returns the value of an instance.
base( )
This method can be called from any other method to invoke that method's parent
Other Instance Members
prototype = { }
Inherited from: Object
Description
Theprototype member of Object defines the instance members.
These are copied to the instance object when the new keyword is called.