JavaScript 객체지향 프로그래밍 객체 생성 패턴

    2018-04-23 17:15:30 작성
    • 생성자/프로토타입 조합 패턴

      생성자 패턴으로 인스턴스의 프로퍼티를 정의하고,
      프로토타입 패턴으로 메서드와 공유 프로퍼티를 정의하는 방법입니다.
      이렇게 하면 모든 인스턴스는 자신만의 프로퍼티를 가질 수 있고
      메서드는 공유하므로 메모리도 절약할 수 있습니다.

      기본적으로 사용자정의 객체를 생성할 때 이 패턴을 먼저 떠올리길 바랍니다.

    • 동적 프로토타입 패턴

      생성자/프로토타입 조합 패턴은 생성자와 프로토타입 정의 부분이 나누어져있어 혼란스러울 수 있습니다.
      동적 프로토타입 패턴은 모든 정보를 생성자 내부에 캡슐화 하여 이런 혼란을 막으려는 접근법입니다.

    • 기생 생성자 패턴

      기존의 생성자 패턴을 더 확장하여 생성자를 만들수 있습니다.
      예를 들어 특별한 메서드를 추가한 배열을 만들고 싶다고 가정합시다.
      Array 생성자에 직접 접근 할 수는 없지만 이 패턴을 사용하면 이러한 제약을우회 할 수 있습니다.

      이 패턴은 반환된 객체, 생성자함수, 생성자 프로토타입 사이에 아무 연결고리가 없습니다.
      따라서 instansof 연산자로 객체 타입을 알 수 없습니다.
      이러한 문제가 있으므로 다른 패턴으로 문제를 해결할 수 있다면 이 패턴은 쓰지 말아야 합니다.

    • 방탄생성자 패턴

      공용프로퍼티가 없고 this를 참조하지 않는 객체를 방탄객체라고 합니다.
      이 용어는 더글라스 크락포드가 처음 만들었습니다.
      방탄객체는 this나 new의 사용을 금지하는 보안 환경에서 사용하는것이 가장 잘 어울립니다.

      방탄객체와 방탄생성자 객체 사잉의 연결은 존재 하지 않으므로 instanceof 연산자로 객체 타입을 알 수 없습니다.