js 계승의 두 번째 -----차용 구조 함수

원형에 인용 유형 값이 포함된 문제를 해결하는 과정에서 개발자들은 차용 구조(constructor stealing)라는 기술을 사용하기 시작했다.
이런 기술의 기본 사상은 상당히 간단하다. 즉, 하위 유형 구조 함수의 내부에서 초유형 구조 함수를 호출하는 것이다.함수가 보충되었을 때 특정 환경에서 실행된 것만 잊지 마라
코드의 대상이기 때문에 apply()와 콜() 방법을 사용하여 새로 만든 대상에서 구조 함수를 다음과 같이 실행할 수 있다.
  <script type="text/javascript">
		function SuperType(){
			this.colors = ["red","blue","green"];
		}
	
		function SubType(){
			// SuperType
			SuperType.call(this);
		}

		var instance1  = new SubType();
		instance1.colors.push("black");
		alert(instance1.colors);//"red,blue,green,black"

		var instance2 = new SubType();
		alert(instance2.colors);//"red,blue,green"
  </script>

이렇게 하면 SubType의 모든 실례는 자신의 colors 속성의 사본을 가지게 된다.
1. 매개 변수 전달
원형 체인에 비해 구조 함수를 빌려 쓰는 것은 매우 큰 장점이 있다. 즉, 서브 유형 구조 함수에서 초유형 구조 함수에 파라미터를 전달할 수 있다.다음과 같습니다.
<script type="text/javascript">
	function SuperType(name){
		this.name = name;
	}
	
	function SubType(){
		// SuperType, 
		SuperType.call(this,"Nicholas");

		// ; , 。
		this.age = 29;
	}

	var instance = new SubType();
	alert(instance.name);
	alert(instance.age);
  </script>

2. 구조 함수를 빌려 쓰는 문제
만약에 구조 함수만 빌려 쓰면 구조 함수 모델에 존재하는 문제점을 피할 수 없다. 방법은 모두 구조 함수에 정의되어 있기 때문에 함수 복용은 말할 여지가 없다.
또한 초유형에 정의된 방법은 하위 유형에도 보이지 않으며 결과적으로 모든 유형은 구조 함수 모델만 사용할 수 있다.
이런 문제점을 감안하면 구조 함수를 빌려 쓰는 기술도 단독으로 사용하는 경우가 드물다.

좋은 웹페이지 즐겨찾기