본문 바로가기

언어/javascript

javascript : 상속

반응형
function Rectangle(w, h) {
    var width = w;
    var height = h;

    this.getWidth = function () { return width; };
    this.getHeight = function () { return height; };
    this.setWidth = function (w) {
        if (w < 0) {
            throw '길이는 음수일 수 없습니다.';
        } else {
            width = w;
        }
    };

    this.setHeight = function (h) {
        if (h < 0) {
            throw '길이는 음수일 수 없습니다.';
        } else {
            height = h;
        }
    };
}

Rectangle.prototype.getArea = function () {
    return this.getWidth() * this.getHeight();
};

function Square(length) {
    this.base = Rectangle;
    this.base(length, length);
}

Square.prototype = Rectangle.prototype;
Square.prototype.constructor = Square;

 

생성자 함수 Square 내부에서 작성한 것은 base 속성에 생성자 함수 Rectangle을 넣고 실행한 것과 생정자 함수 Square의 프로토타입에 Rectangle의 프로토타입을 넣은 것 두 가지입니다. 전자를 사용해 Rectagle 객체의 속성을 Square 객체에 추가했으며, 후자를 사용해 Rectangle 객체의 프로토타입이 가진 속성 또는 메서드를 Square 객체의 프로토타입에 복사 했습니다. 참고로 일부러 base 속성이라는 이름을 사용할 필요는 없습니다.

 

프로토타입에 대해서 잠깐 설명하자면 JAVA를 사용해신분이 있다면 Class에 static의 기능과 비슷하다. 하지만 JavaScript는 Object를 선언한 다음에 추가적으로 선언을 한번더 할 수 있는 특징을 가지고 있다.

 

 

반응형

'언어 > javascript' 카테고리의 다른 글

javascirpt : 클래스 선언과 속성  (0) 2020.12.15
javascript : prototype, constructor  (0) 2020.12.14
javascript : new 키워드  (0) 2020.12.09
javascript : 프로토타입으로 메서드 생성  (0) 2020.12.09
javascript : instanceof  (0) 2020.12.09