<script type="text/javascript">
        function Rectangle(w, h) {
            var width = w;
            var height = h;

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

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

        var rectangle = new Rectangle(5, 7);

        alert('AREA: ' + rectangle.getArea());

        function Square(length)
        {
            this.base = Rectangle;
            //base 속성에 함수 Rectabgle을 넣고 실행
            this.base(length, length);
        }
        Square.prototype = Rectangle.prototype;
        //Square 프로토타입에 Rectabgle 프로토타입
        var square = new Square(5);
        alert(square instanceof Rectangle);

    </script>

 

                                                   

    자바스크립트에서 상속이란 생성자 함수나 객체를 기반으로 새로운 생성자 함수나 객체를 만든다를 뜻한다


    위 소스에서 Rectabgle함수를 상속받아 속성들을 Square에서 그대로 사용할 수 있게 한다

    먼저 Square의 base속성에 Rectangle 함수를 넣고 Rectangle의 프로토타입도

 

    square 객체의 프로토타입에  저장 했다

    추가로 자바스크립트에서는 정확한 상속 방법은 없다, 상속 여부를판단하는 기준은

    instanceof 키워드를 사용하여true가 출력된다면 상속됐다고 판단한다

    var square = new Square(5);


    alert(square instanceof Rectangle);


'개발개발 > 자바스크립트' 카테고리의 다른 글

기본내장객체 - Number  (0) 2012.08.27
기본내장객체 - object  (0) 2012.08.27
getter,setter  (0) 2012.08.27
프로토타입  (0) 2012.08.27
생성자 함수  (0) 2012.08.27
Posted by 공돌공돌
,