https://github.com/powerumc/javascript-oop-aop-ioc
Easily Javascript OOP Library
https://github.com/powerumc/javascript-oop-aop-ioc
Last synced: 9 months ago
JSON representation
Easily Javascript OOP Library
- Host: GitHub
- URL: https://github.com/powerumc/javascript-oop-aop-ioc
- Owner: powerumc
- License: mit
- Created: 2014-10-20T13:28:29.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2016-03-18T01:39:39.000Z (almost 10 years ago)
- Last Synced: 2025-04-11T01:06:23.066Z (9 months ago)
- Language: JavaScript
- Size: 80.1 KB
- Stars: 6
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=5MVU4AFQCD6LY&lc=KR&item_name=POWERUMC¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted)
Javascript-OOP-AOP-IoC
======================
Easily Javascript OOP Library

# Install
- npm
```bash
npm install javascript-oop-aop-ioc
```
- bower
```bash
bower install javascript-oop-aop-ioc
```
1. Basic
=========
We can learn to define the classes so easily. ```oop.class(...)``` method is it.
### oop.class( [parents,] classInfo )
1. Define class.
```js
var Program = oop.class({
say: function() { return "Hello"; }
});
var p = new Program();
p.say();
// return "Hello"
```
2. Define properties.
- Define basically properties.
```js
// Define class.
var Program = oop.class({
say: function() { return "Hello"; },
name: "엄준일"
});
var p = new Program();
console.log("My name is ", p.name);
// output
My name is 엄준일
```
- Define custom get/set property.
```js
var Program = oop.class({
say: function() { return "Hello"; },
name: "엄준일",
age: { get: function() { return this._age; },
set: function(value) { this._age = value; }
});
var p = new Program();
p.age = 35;
console.log("My age is ", p.age);
// output
My age is 35
```
2. Inheritances
================
### oop.class( parents, classInfo )
1. **Inheritance** from parent.
```js
// Define parent class
var Program = oop.class({
version: "1.0.2",
show: function() {
console.log("openning window.");
/* some code.. */
}
});
// Define class.
var Outlook = oop.class( Program, {
run: function() { console.log("running outlook program."); }
});
// Run code.
var outlook = new Outlook();
console.log("version " + outlook.version);
outlook.run();
outlook.show();
// Output
version 1.0.2
running outlook program.
openning window.
```
2. '**self**' instance reference.
```js
var Program = oop.class({
version: "1.0.2",
show: function() {
console.log("openning window.");
/* some code.. */ }
});
var Outlook = oop.class( Program, {
run: function(self) { // inject 'self' argument name.
console.log("running outlook program.");
// *** HERE ***
// a method call inhertianced Program.show method.
self.show();
}
});
var outlook = new Outlook();
console.log("version " + outlook.version);
outlook.run();
//outlook.show(); remove this line.
// Output
version 1.0.2
running outlook program.
openning window.
```
3. '**base**' parent instance reference.
```js
var Program = oop.class({
run: function() { console.log("run Program.") }
});
var Outlook = oop.class( Program, { // HERE inheritance Program class.
run: function(base) {
console.log("run Outlook.");
// *** HERE ***
// You can call parent method from base keyword.
base.run();
}
});
// Output
// run Outlook.
// run Program.
```
4. Hierarchically Inheritances.
```js
var Program = oop.class( {
run: function() { console.log("Program.run();");
}});
var ProgramBase = oop.class( Program, {
run: function(base) { console.log("ProgramBase.run();"); base.run();
}});
var Outlook = oop.class( ProgramBase, {
run: function(base) { console.log("Outlook.run();"); base.run();
}});
var outlook = new Outlook();
outlook.run();
// Output
Outlook.run();
ProgramBase.run();
Program.run();
```
3. Injection
=============
### oop.inject( [argument], ... )
1. Inject to pass arguments.
```js
var Program = oop.class({
version: "v1.0"
});
var Outlook = oop.class( Program, {
version: "v2.0",
run: function(base, self) {
console.log("base version: " , base.version)
console.log("current version: ", self.version);
}
});
var outlook = new Outlook();
outlook.run();
// Output
base version: v1.0
current version: v2.0
```
2. Inject to resolve container.
4. Interception - AOP
======================
- ### oop.interception( function, behavior )
- ### oop.interceptionBehavior( before, after, exception, finally_ )
1. Interception a class or method.
- Interception **a method**
```js
var Program = oop.class({
run: function(msg) { console.log("run Program. ", msg); }
});
// *** HERE ***
// Setup the interception a method
var p = new Program();
oop.interception( p.run, oop.behaviors.LoggingBehavior );
// Call a 'run' method.
p.run("Now running...");
// Output
------ enter interception ------
[Thu Nov 13 2014 09:29:41 GMT+0900 (KST)] {}
run Program. Now running...
------ end interception ------
```
- Interception **a class instance**.
```js
var Program = oop.class({
run: function(msg) { console.log("run Program.", msg); },
terminate: function() { console.log("Terminated the Program.") }
});
// *** HERE ***
// Pass class instance arguments
var p = new Program();
oop.interception( p, oop.behaviors.LoggingBehavior );
// Call a 'run' method.
p.run("Now running...");
p.terminate();
// Output
------ enter interception ------
[Thu Nov 13 2014 09:29:41 GMT+0900 (KST)] {}
run Program. Now running...
Terminated the Program.
------ end interception ------
```
2. Interception custom **behaviors**
- Define the custom behavior
You can make the interception behaviors, call the oop.interceptionBehavior method.
```js
var customBehavior = oop.interceptionBehavior(
function() { console.log("before"); },
function() { console.log("after"); },
function() { console.log("throw exception"); },
function() { console.log("finally"); }
);
var Program = oop.class({
run: function() { console.log("run Program."); }
});
var p = new Program();
oop.interception(p, customBehavior);
p.run();
// Output
before
run Program.
after
finally
```
If it throw the exception, invoke exception behavior. For examples,
```js
var Program = oop.class({
run: function() {
console.log("run Program.");
throw "crashing... ";
}});
var p = new Program();
oop.interception(p, customBehavior);
p.run();
// Output
before
run Program.
throw exception crashing... // HERE exception behavior.
finally
```