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에서 해주시기 바랍니다.
| 번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|---|
| 4946 | node.js | 6년 전 | 2617 | ||
| 4945 | node.js | 6년 전 | 2389 | ||
| 4944 | node.js | 6년 전 | 2526 | ||
| 4943 | node.js | 6년 전 | 2278 | ||
| 4942 | node.js | 6년 전 | 2260 | ||
| 4941 | node.js | 6년 전 | 2724 | ||
| 4940 | node.js | 6년 전 | 1872 | ||
| 4939 | node.js | 6년 전 | 1999 | ||
| 4938 | node.js | 6년 전 | 2461 | ||
| 4937 | node.js | 6년 전 | 2256 | ||
| 4936 | node.js | 6년 전 | 2327 | ||
| 4935 | node.js | 6년 전 | 2144 | ||
| 4934 | node.js | 6년 전 | 2453 | ||
| 4933 | node.js | 6년 전 | 2254 | ||
| 4932 | node.js | 6년 전 | 2692 | ||
| 4931 | node.js | 6년 전 | 2078 | ||
| 4930 | node.js | 6년 전 | 2004 | ||
| 4929 | node.js | 6년 전 | 8641 | ||
| 4928 | node.js | 6년 전 | 3759 | ||
| 4927 | node.js | 6년 전 | 2399 | ||
| 4926 | node.js | 6년 전 | 2509 | ||
| 4925 | node.js | 6년 전 | 2093 | ||
| 4924 | node.js | 6년 전 | 3380 | ||
| 4923 | node.js | 6년 전 | 2231 | ||
| 4922 | node.js | 6년 전 | 1998 | ||
| 4921 | node.js | 6년 전 | 2051 | ||
| 4920 | node.js | 6년 전 | 1770 | ||
| 4919 | node.js | 6년 전 | 2043 | ||
| 4918 | node.js | 6년 전 | 2184 | ||
| 4917 | node.js | 6년 전 | 2402 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기