-
Notifications
You must be signed in to change notification settings - Fork 21
Class
rAppid.js uses requirejs and inherit.js to define and extend classes.
The full qualified name of your class is defined by it's file path. For example:
// Path Full-qualified class name
/app/data/MyClass.js -> app.data.MyClass
/app/Example.js -> app.Example
The class definition of MyClass could then look like this:
define(['app/data/MySuperClass'],function(MySuperClass){
var someStatic;
// inherit from Model class
return MySuperClass.inherit('app.data.MyClass',{
// class constructor
ctor: function(){
// call base constructor
this.callBase();
},
// class methods
foo: function(){
}
}
});The first parameter of define expects an array of dependencies with their full-qualified class names. In this example we only need app/data/MySuperClass. The second parameter of define takes a function which will return the defined class app/data/MyClass. The function get's all required dependencies as input parameters.
Classes are defined and extended with inherit.js MySuperClass.inherit(...). As first parameter of inherit you can set a custom class name, which will be accessible on the prototype of your class instances.
The second parameter of inherit is a hash, which contains all class methods and static attributes.
The super of an overridden method can be called with this.callBase(). If you define no arguments, all arguments of your child method are passed. (See foo) Otherwise you can pass your own arguments. (See bar)
return MySuperClass.inherit('app.data.MyClass',{
...
// simple use of callBase
foo: function(x,y){
// passes x and y silently
this.callBase();
}
// advanced use of callBase
bar: function(a,b,c){
var t;
// passes t and c
this.callBase(t,c);
}
}To check the type of a class instance, you can use instanceof:
...
if(myObject instanceof MyClass){
// do something
}
...