-
Notifications
You must be signed in to change notification settings - Fork 0
leonchen/Klass
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
require('sys');
require('./klass');
//1. create klass:
Klass.create('A.B', {
initialize: function (word) {
this.word = word;
},
say: function () {
console.log(this.word);
}
});
var c = A.B.$new('hello world');
c.say();
//2. klass method:
Klass.create('A.B', {
$say: function () {
console.log('hello world');
}
});
A.B.$say();
//3. private method:
Klass.create('A.B', {
$say: function () {
console.log('klass '+ _say());
},
say: function () {
console.log('instance ' + _say());
},
_say: function () {
return 'hello world';
}
});
A.B.$say();
var c = A.B.$new();
c.say();
//4. extend klass:
Klass.create('A.B', {
initialize: function (word) {
this.word = word;
}
});
A.B.$extend({
say: function () {
console.log(this.word);
}
});
var c = A.B.$new('hello world');
c.say();
//5. subKlass:
Klass.create('A', {
initialize: function (word) {
this.word = word;
}
});
A.$subKlass('B', {
say: function () {
console.log(this.word);
}
});
var c = B.$new('hello world');
c.say();
//6. self usage:
Klass.create('A', {
initialize: function (word) {
self.word = word;
self.sayAgain = function () {
self.say();
};
},
say: function () {
console.log(self.word);
}
});
var a = A.$new('hello world');
a.sayAgain();
//7. _super:
Klass.create('A', {
_say: function () {
return 'world';
}
});
A.$subKlass('B', {
_say: function () {
return 'hello ' + _super();
}
});
B.$subKlass('C', {
say: function () {
console.log(_say());
},
_say: function () {
return 'say ' + _super();
}
});
var c = C.$new();
c.say(); // say hello world
//8. klass attribute:
Klass.create('A', {
$LIMIT: 100
});
console.log(A.$LIMIT); // 100
//9. mixin:
Klass.create('A', {
$LIMIT: 100
});
Klass.create('B', {
say: function () {
console.log(_say());
},
_say: function () {
return 'hello';
}
});
Klass.create('C', {
Mixins: [A, B],
_say: function () {
return 'world';
}
});
console.log(C.$LIMIT); // 100
var c = C.$new();
c.say(); // world
//10. abstract klass:
Klass.create('C', {
Abstract: true,
});
try {
var c = C.$new();
} catch (e) {
console.log('abstract klass cannot be instantiated');
}
//11. singleton:
Klass.create('C', {
Singleton: true,
count: function () {
this._count = this._count || 1;
console.log(this._count);
this._count++;
}
});
var c = C.$singleton();
c.count(); // 1
var cc = C.$singleton();
cc.count(); // 2
About
javascript library to improve javascript oo programming
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published