개발정리

javascript / Chapter5. 상속 본문

JS/javascript

javascript / Chapter5. 상속

성구님 2017. 2. 26. 23:04
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

00 들어가며

01 의사클래스 방식

02 객체를 기술하는 객체

03 프로토타입 방식

04 함수를 사용한 방식

05 클래스 구성을 위한 부속품

 

00 들어가며

  • 상속을 사용하는 이유
    • 기존의 클래스와 매우 유사한 객체 제작 시 상속을 통해 개발비용을 현저히 줄일 수 있다.
    • 데이터 타입 체계명시 → 캐스팅 작업이 사라짐
    • 하지만, 자바스크립트는 데이터 타입 확인이 엄격하지 않으므로
      캐스팅을 절대 하지 않는다. 
  • 자바스크립트의 상속은 객체에서 객체로 상속된다.

 

01 의사클래스방식

  • 생성자 함수를 통해 객체 상속
  • 함수객체가 만들어 질 때 Function 생성자

    this.prototype = {constructor : this};
  • 만약 new 연산자가 메소드라면

    Function.method('new'function () {
        var that = object.create(this.prototype);
        var other = this.apply(that, arguments);
      
        return (typeof other === 'object' && other) || that;
    });
  • 의사클래스 방식의 단점
    • private 속성이 없다.
    • new 연산자를 사용하지 않으면 함수 내부의 this는 전역을 가지게 된다.
  • 사용하지 않는 것을 추천.

 

02 객체를 기술하는 객체

  • 생성자가 매우 많은 매개변수를 갖는 경우

    var obj = maker({
        first : 1,
        second : 2,
        //...
    )};
  • 코드의 가독성을 높힌다.
  • JSON 객체를 생성자로 받아 쉽게 처리 가능.

 

 

03 프로토타입 방식

  • 객체와 객체 간의 상속 (prototype을 통한)
  • 새로운 객체는 기존 객체의 속성을 상속 받는다.

    var old = {}; //...
    var obj = Object.create(old);
    obj.name = 'seong tae';
    obj.saying = 'wow!';
    obj.get_name = function () {
        return this.says + this.name + this.says();
    };
  • 데이터 구조를 상속받는 데이터 구조에 유용하다.

 

 

04 함수를 사용한 방식

  • 이전 상속 방법은 private 속성을 가질 수 없었다.
  • 모듈패턴을 사용해 좀 더 나은 방법을 가질 수 있다.
  • 객체 생성 4단계
    • 새로운 객체 생성
    • 필요한 private 변수 선언
    • that에 새로운 객체를 할당하고 메소드 추가
    • 새로운 객체 that을 반환
    var con = function (spec, my) {
        var that, privates;
        my = my || {};
      
        that = function () {
            //...
        };
        return that;
    };
  • spec
    • spec은 con이 인스턴스를 만드는데 필요한 모든 정보가 있다.
    • sper은 private 변수에 복사되거나 다른 함수에서 처리 가능하다.
    • 또한 메소드에서 필요 정보를 spec에서 얻을 수있다.
  • my
    • my객체는 상속 연결상에서 생성자와 공유하게 되는 비밀들을 담는 컨테이너이다. (선택사항)
  • private 변수는 con내부에 선언된 변수들이다.
  • 공유한 private 요소는 my객체에 추가한다.
  • 새로운 객체는 that에 추가한다 (인터페이스)
  • super 메소드를 다룰 수 이쓴 방법을 제공한다.
  • 유연성이 좋다.
  • 객체 상태가 모두 private이면 객체는 방탄이 된다.
  • 객체의 속성이 대체되거나 삭제될 수 있지만 무결성에는 영향받지 않는다.
  • 매우 안전한 방법

 

 

05 클래스 구성을 위한 부속품

  • 객체 구성 시 부속품을 조립하듯이 만들 수 있다.
  • return되는 함수를 여러개로 나눠서 부품을 만든다.

 

 

 

 참고문헌

1. 더글라스 크락포드, 김명신  자바스크립트 핵심가이드 javascript The good parts』, 한빛미디어

 

'JS > javascript' 카테고리의 다른 글

javascript / Chapter7. 정규 표현식  (0) 2017.02.26
javascript / Chapter6. 배열  (0) 2017.02.26
javascript / Chapter4. 함수 2  (0) 2017.02.08
javascript / Chapter4. 함수 1  (0) 2017.01.31
javascript / Chapter3. 객체  (0) 2017.01.23
Comments