>  기사  >  웹 프론트엔드  >  js package_javascript 스킬에서 활용 가능한 생성자 상속 활용 분석

js package_javascript 스킬에서 활용 가능한 생성자 상속 활용 분석

WBOY
WBOY원래의
2016-05-16 16:17:331081검색

이 기사의 예에서는 js 캡슐화에 사용할 수 있는 생성자 상속의 사용을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 내용은 다음과 같습니다.

먼저 다음 코드를 살펴보겠습니다

(YUI) 라이브러리에서 사용하는 방법:

코드 복사 코드는 다음과 같습니다.
function extend(Child, Parent) {

 var F = function(){};
  F.prototype = Parent.prototype;
  Child.prototype = new F();
​Child.prototype.constructor = 자식;
  Child.uber = Parent.prototype;
}

복사 상속 방법인 속성 복사도 있습니다.

이 방법은 이전 방법과 다릅니다. child의 프로토타입 확장이 완료되었으므로 더 이상 덮어쓰지 않으므로 child.prototype.constructor 속성을 재설정할 필요가 없습니다.

이전 방법에 비해 이 방법은 확실히 효율성이 약간 떨어집니다. 여기서 수행되는 작업은 하위 개체의 프로토타입을 하나씩 복사하는 것이기 때문입니다. 단순한 프로토타입 체인 쿼리가 아닙니다.

이 방법은 기본 데이터 유형만 포함하는 객체에만 적용할 수 있습니다. 함수 및 배열을 포함한 모든 객체 유형은 복사할 수 없으며 참조 전달만 지원합니다.

코드 복사 코드는 다음과 같습니다.
function extend2(Child, Parent) {
  var p = Parent.prototype;
  var c = Child.prototype;
  for (var i in p) {
   c[i] = p[i];
   }
  c.uber = p;
}

var Shape = function(){}
var TwoDShape = function(){}
Shape.prototype.name = '모양';
Shape.prototype.toString = function(){
return this.name;
}
확장2(TwoDShape,Shape);
var t = new TwoDShape();
t.이름
//-->"모양"
t.toString();
//-->"모양"
TwoDShape.prototype.name = 'TwoDShape';
t.이름
//-->"2D 모양"
t.toString();
//-->"2D 모양"

TwoDShape.prototype.toString === Shape.prototype.toString
//-->참
TwoDShape.prototype.name === Shape.prototype.name
//-->거짓

이 기사가 모든 사람의 JavaScript 프로그래밍 설계에 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.