<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 공돌공돌
,

<!--StartFragment--><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는 웹 페이지 오류를 발생시키는 키워드
                    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());
    </script>

 

    만일의 상황에 대비해서 특정 속성이나 메서드를 사용자가 사용할 수 없게 하는 것이 캡슐화!


    getter, setter를 통해 메소드를 통해서만 속성에 값을 입력할 수 있게 한다!

 

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

기본내장객체 - object  (0) 2012.08.27
상속  (0) 2012.08.27
프로토타입  (0) 2012.08.27
생성자 함수  (0) 2012.08.27
함수를 사용한 객체 생성  (0) 2012.08.27
Posted by 공돌공돌
,

<script type="text/javascript">
        function Student(name, korean, math, english, science) {
            this.이름 = name;
            this.국어 = korean;
            this.수학 = math;
            this.영어 = english;
            this.과학 = science;
        }
        Student.prototype.getSum = function () {};
        Student.prototype.getAverage = function () {};
        Student.prototype.toString = function () {};
    </script>


    프로토타입은 생성자 함수를 사용해 생성된 객체가 공통으로 가지는 공간으로


    각각의 객체가 가지고 있는 메서드를 한 공간으로 옮긴다


    프로토타입을 사용하면 이미 있는 객체에 추가로 메소드를 제공할 수 있다

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

상속  (0) 2012.08.27
getter,setter  (0) 2012.08.27
생성자 함수  (0) 2012.08.27
함수를 사용한 객체 생성  (0) 2012.08.27
객체와 배열을 사용한 데이터 관리  (0) 2012.08.27
Posted by 공돌공돌
,