nodejs 기초문법 - 클래스
기초문법
마. 클래스
javascript 는 프로토타입기반의 함수형 언어이기 때문에 특별하게 객체지향을 위한 class는 없습니다.
하지만 함수형 언어들의 특징은 함수자체를 하나의 객체로 취급하기 때문에 단일함수 또는 파일 자체를 하나의 class처럼 사용할 수 있습니다.
그럼 먼저 javascript 에서 함수를 사용해 객체화하는 방법을 알아보겠습니다. test_class.js 파일을 하나 만들고 아래 코드를 입력합니다.
test_class.js
//class의 선언 - 낙타표기법으로 첫번째 글자를 대문자로 함수를 하나 선언한다.
function Clazz(msg){
// 변수를 객체의 멤버로 사용하기 위해 this 예약어를 사용해서 정의한다.
this.name = 'I am Class';
this.message = msg;
// this를 사용하지 않은 변수
message2 = "find me!";
// 멤버함수 선언
this.print = function(){
console.log(message2);
};
}
// 객체를 생성
var myClazz = new Clazz('good to see u!');
console.log(myClazz.message);
// this를 사용하지 않은 message2 변수는 외부에서 참조할 수 없다.
console.log(myClazz.message2);
// this로 선언된 함수를 통해 사용할 수 있다.
myClazz.print();
node test_class 명령어로 위의 코드를 실행하면 함수 내부에 this 로 정의되지 않은 변수는 undefined 로 찾을 수 없다고 나타납니다.
이렇게 함수를 new 연산자를 이용해 초기화함으로써 마치 객체처럼 사용할 수 있게 됩니다.
이제 위의 코드에 prototype 예약어를 이용해서 Clazz 외부에서 함수를 추가해 보겠습니다.
classPrototype.js 파일을 하나 만들고 아래 코드를 입력합니다.
this 로 선언되지 않은 변수는 prototy[e으로 추가한 함수에서는 참조할 수 없는것을 확인할 수 있습니다.
test_prototype.js
function Clazz(msg){
this.name = 'I am Class';
this.message = msg;
message2 = "find me!";
}
//Clazz 객체의 prototype 을 가져와서 message값을 리턴하는 함수를 하나 추가한다.
Clazz.prototype.getMessage = function(){
return this.message;
}
Clazz.prototype.getMessage2 = function(){
return this.message2;
}
// 객체를 생성
var myClazz = new Clazz('good to see u!');
console.log(myClazz.getMessage());
// 내부에 선언된 함수와는 다르게 prototype으로 선언한 함수는 값을 사용할 수 없다.
console.log(myClazz.getMessage2());
이제 node.js 에서 객체를 사용하는 방법을 알아보겠습니다.
node.js에서는 require 를 사용해서 파일 전체를 객체로 불러올 수 있습니다.
파일 내부의 멤버들은 exports로 정의할 수도 있고,
javascript에서처럼 this나 prototype으로 선언하고 module.exports 명령어로 한번에 처리할 수도 있습니다.
먼저 NodeClass.js 파일을 하나 만들고 아래와 같이 입력합니다.
NodeClass.js
function Clazz(){
this.name = 'Hello there!';
this.message;
}
// message 변수에 값을 입력하는 함수
Clazz.prototype.setMessage = function(msg){
this.message = msg;
}
// message 변수의 값을 가져오는 함수
Clazz.prototype.getMessage = function(){
return this.message;
}
// exports 명령어를 사용함으로써 다른파일에서 require 예약어를 이용해 Clazz 객체를 사용할 수 있게된다.
// exports 명령어의 위치는 파일의 어떤곳에 위치해도 동일하게 동작한다.
module.exports = Clazz;
이제 NodeClass 파일을 호출해서 사용할 use_class.js 파일을 생성하고 아래와 같이 입력합니다.
use_class.js
// NodeClass 를 선언한다. 여기서 NodeClass 는 변수명이 아니라 class명 이므로 첫글자를 대문자로 한다.
var NodeClass = require('./NodeClass');
// new 연산자를 사용해서 NodeClass 클래스를 nodeClass 변수로 초기화한다.
var nodeClass = new NodeClass();
// setMessage 함수로 값을 입력한다.
nodeClass.setMessage('Good to See u!');
// 입력된 값을 출력한다.
console.log(nodeClass.getMessage());
node use_class 명령어로 실행하면 아래와 같이 입력한 메시지가 출력되는 것을 확인할 수 있습니다.
댓글 3개
게시판 목록
개발자팁
질문은 QA에서 해주시기 바랍니다.
| 번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|---|
| 5396 | 기타 |
슈퍼스타맨
|
3개월 전 | 334 | |
| 5395 | PHP |
untitled
|
5개월 전 | 809 | |
| 5394 | MySQL |
선택과집중
|
5개월 전 | 582 | |
| 5393 | 웹서버 |
techstar
|
7개월 전 | 850 | |
| 5392 |
|
1년 전 | 1205 | ||
| 5391 | 9개월 전 | 1108 | |||
| 5390 | 9개월 전 | 893 | |||
| 5389 | 8개월 전 | 864 | |||
| 5388 | 8개월 전 | 965 | |||
| 5387 | 7개월 전 | 798 | |||
| 5386 | JavaScript |
nekoieye
|
7개월 전 | 959 | |
| 5385 | 웹서버 | 7개월 전 | 979 | ||
| 5384 | JavaScript |
|
8개월 전 | 801 | |
| 5383 | 기타 | 9개월 전 | 1116 | ||
| 5382 | 기타 |
|
9개월 전 | 566 | |
| 5381 | JavaScript | 9개월 전 | 895 | ||
| 5380 | 기타 |
|
9개월 전 | 678 | |
| 5379 | JavaScript | 10개월 전 | 681 | ||
| 5378 | 10개월 전 | 1188 | |||
| 5377 | 기타 |
|
10개월 전 | 751 | |
| 5376 | jQuery |
|
10개월 전 | 560 | |
| 5375 | jQuery |
techstar
|
10개월 전 | 718 | |
| 5374 | 기타 |
|
10개월 전 | 765 | |
| 5373 | MySQL |
|
11개월 전 | 799 | |
| 5372 | 기타 |
|
11개월 전 | 1001 | |
| 5371 | JavaScript |
|
11개월 전 | 713 | |
| 5370 | JavaScript |
|
11개월 전 | 718 | |
| 5369 | PHP |
|
11개월 전 | 1232 | |
| 5368 | PHP | 11개월 전 | 1397 | ||
| 5367 | 기타 |
nekoieye
|
1년 전 | 1271 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기