-
Notifications
You must be signed in to change notification settings - Fork 0
Home
powerumc edited this page Nov 16, 2014
·
2 revisions
자바스크립트로 쉽게 객체지향 프로그램(OOP) 라이브러리
- npm
npm install javascript-oop-aop
- bower
bower install javascript-oop-aop-ioc
- 기초 =========
이 라이브러리를 이용하면 매우 쉽게 클래스를 선언할 수 있습니다. oop.class(...)
를 사용합니다.
-
클래스 선언
var Program = oop.class({ say: function() { return "Hello"; } }); var p = new Program(); p.say(); // return "Hello"
-
프로퍼티 선언
-
기본적인 프로퍼티 선언
// 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 엄준일
-
사용자 정의 get/set 프로퍼티 선언
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
-
-
상속 ================
-
부모 클래스 상속하기
// 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.
-
자기 자신 참고 (this or self)
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.
-
부모 인스턴스 참조
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.
-
인젝션 (주입) =============
-
매개변수 주입
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
-
컨테이너로부터 주입
-
가로채기 - AOP ======================
-
클래스 또는 메서드 가로채기
-
메서드 가로채기
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 ------
-
클래스 인스턴스 가로채기
var Program = oop.class({ run: function() { 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 ------
-
-
사용자 정의 가로채기 (Behaviors)
-
사용자 정의 가로채기 정의
가로채기 행위를 사용자 정의로 만드시려면 oop.interceptionBehavior 메서드를 호출합니다.
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,
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
-