[Node.js] 프로토타입 객체

프로토타입 객체

자바스크립트의 객체를 만들 때는 중괄호를 이용한다. 그런데 자바스크립트 객체는 함수를 이용해서 만들 수도 있다. 함수도 객체이기 때문이다. 함수에 여러가지 기능, 속성이 추가되면서 객체 지향 언어에서 객체의 원형(Prototype)인 클래스를 만들고, 그 클래스에서 인스턴스 객체를 여러 개 만들어 내듯이 자바스크립트에서도 객체의 원형을 정의한 후 그 원형에서 새로운 인스턴스 객체를 만들 수 있다.

프로토타입 객체는 데이터를 넣어두려는 목적보다는 하나의 틀이라고 생각하면 쉽다. 붕어빵 틀에서 붕어빵을 만들어 내는 것과 비슷하다.

function Person(name, age){
    this.name = name;
    this.age = age;
}
 
Person.prototype.walk = function(speed){
    console.log(speed + 'km 속도로 걸어갑니다.');
}
 
var person01 = new Person('zini'24);
var person02 = new Person('yeong'25);
 
console.log(person01.name + '객체의 walk(10)을 호출');
person01.walk(10);
cs

프로토타입 객체를 정의하고 나면 new 연산자를 사용하여 인스턴스 객체를 만들 수 있다. Person 프로토타입 객체를 만들려면 먼저 Person 함수를 정의한다. 자바스크립트에서는 함수도 객체이기 때문에 이 함수는 객체의 역할을 할 수 있다.

즉, 함수 중 new 연산자로 호출되는 함수는 객체를 만들기 위한 함수이며, 생성자(Constructor)라고 한다. 따라서 그 객체 안에 name 속성을 만들거나 접근하고 싶다면 this를 사용한다.

Person 객체는 name, age 속성을 갖게 되었다. 이제 이 객체에 walk 함수를 추가하고 싶다면 Person.walk = function ... 이 아닌 Person.prototype.walk = function ... 과 같은 형태로 만든다. Person 객체가 실제 데이터를 담기 위해 만들어진 게 아니라 다른 인스턴스 객체를 만들기 위한 원형 틀로 만들어졌기 때문이다.

댓글 없음:

Powered by Blogger.