-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathClass.js
More file actions
41 lines (31 loc) · 908 Bytes
/
Class.js
File metadata and controls
41 lines (31 loc) · 908 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Class = function () {
var klass = function () {
return this.initialize.apply(this, arguments);
}
for(var i = arguments.length; i != 0; i--){
klass = Class.extend(klass, arguments[i - 1]);
}
if(!klass.initialize){
klass.initialize = function () {}
}
return klass;
}
var extend = Class.extend = function (klass, arg) {
var hash = arg,
buildProto = function (arg) {
var mysuper = arg; // Append constructor
mysuper.prototype = arg.prototype; // Append prototype
mysuper.prototype.constructor = arg; // Set constructor
return mysuper;
}
if(typeof(arg) == 'function'){
klass.prototype.super = buildProto(arg);
hash = arg.prototype;
}
for(prop in hash){
if(prop != 'super'){ // Don't want to overwrite the super methods
klass.prototype[prop] = hash[prop];
}
}
return klass;
}