프로토타입(Prototype)

javascript 2017. 8. 28. 18:33

728x90
반응형

프로토타입


코딩을 하다보면 동일한 객체를 여러 개 생성하는 경우가 매우 빈번히 발생합니다. 속성은 어차피 각자 다른 값을 가져야하기 때문에 그렇다 치더라도 함수의 경우 동일한 기능을 하는 것들이 메모리 상에 각자 상주하게 되면 이는 메모리의 낭비로 이어질 수 있습니다. 이 논리는 여러 객체들이 동일한 값을 가져야하는 속성에도 동일하게 적용될 수 있습니다.


이러한 문제점을 해결하기 위한 방법으로 자바스크립트에서는 프로토타입이라는 개념을 사용합니다.


프로토타입(prototype)은 원래 형태 또는 전형적인 예, 기초 또는 표준을 의미하는 단어로 자바스크립트에서는 구속이 약한 형태의 클래스를 의미합니다. 객체의 함수를 프로토타입으로 선언하면 객체는 객체 원형의 함수를 참조하여 작업을 수행하기 때문에 메모리 상에 같은 기능을 수행하는 함수가 하나만 존재하게 되어 메모리 낭비를 막는 효과를 얻을 수 있습니다.




프로토타입 함수 선언


프로토타입은 아래와 같은 코드를 작성하면 선언할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//객체 생성
var Info = function (_name, _age, _sex) {
    this._name2 = _name;
    this._sex2 = _sex;
    this._age2 = _age;
};
//프로토타입 메서드 추가
Info.prototype.getInfo = function () {
    return this._name2 + ", " + this._sex2 + ", "  + this._age2;
}
//객체 인스턴스 생성
var t1 = new Info("YenaMobile"37"Male");
var t2 = new Info("PMK"37"Male");
//프로토타입 메서드 호출
window.alert(t1.getInfo());
window.alert(t2.getInfo()); 
cs



이렇게 한 번 프로토타입 함수를 선언하면 객체를 여러 개 생성하더라도 하나의 함수를 참조하기 때문에 메모리의 누수를 막을 수 있습니다.


원본 링크 : https://goo.gl/4qQttb

반응형