javascript 혼합 구조 함수 와 원형 방식,동적 원형 방식
function car (sColor,iNumbers){ // ,
this.color = sColor;
this.numbers = iNumbers;
this.dirvers = new Array ("Jone","Leon");
}
car.prototype.showColor = function (){ // ,
alert(this.color);
}
var car1 = new car("red");
var car2 = new car("yellow");
car1.showColor)();
car2.showColor)();
요약:새로운 대상 인 스 턴 스 car1 과 car2 를 만 들 때 car1 과 car2 는 함수 대상 car 의 모든 비 함수 속성 을 계승 합 니 다.이때 car 함수 밖에서 car 함수 대상 의 원형 에 show Color 방법 을 생 성 합 니 다.이때 car 1 과 car 2 는 모두 car 의 원형 안의 show Color 방식 을 참조 합 니 다.만약 에 원형 방법 을 car 함수 체 에 넣 으 면 이때 car 1 과 car 2 는 인용 관계 가 아니 라 함수 가 실 행 될 때마다 show Color 함 수 를 구축 합 니 다.만약 에 100 개의 car 가 있다 면...그러면 100 개의 함 수 를 중복 구성 해 야 한다.그래서 비 함수 속성 과 함수 속성 을 나 누 어 써 야 합 니 다.2.동적 원형 방식(중점)
function car (sColor,iNumbers){ // ,
this.color = sColor;
this.numbers = iNumbers;
this.dirvers = new Array ("Jone","Leon");
if(typeof car._initialized=="undefined"){ // , car._initialized ,
car.prototype.showColor = function (){
alert(this.color);
}
}
car._initialized = true; //
, ,car._initialized , , ,new , , showColor 。 , car._initialized undefined , showColor, car._initialized=true, , , new , : , , !
}
var car1 = new car ("red");
var car2 = new car ("yellow");
car1.showColor();
car2.showColor();
정리:위의 두 가지 방식 을 이용 하 는 것 이 든 똑 같은 효 과 를 얻 을 수 있다!방법 1:혼 합 된 구조 함수 와 원형 방식 은 비 함수 속성 과 일반 속성 을 나 누 어 쓰 는 것 과 같 습 니 다.이렇게 new 대상 을 만 들 때 새로운 함 수 를 반복 하지 않 습 니 다.이때 인 용 된 지식 함수 대상 의 원형 방법 과 함수 대상 의 속성 입 니 다.그러나 코드 는 봉인 되 어 있 지 않 고 아무것도 영향 을 주지 않 는 것 처럼 보 였 다.방법 2:JAVA 의 프로 그래 밍 코드 스타일 을 완전히 이용 하여 JS 의 프로 그래 밍 을 실현 합 니 다.이러한 장점 은 전체 함 수 를 속성 과 방법 을 하나의 함수 안에'패키지'하 는 것 처럼 보이 게 하고'클래스'처럼 보이 게 하 는 것 이다.온고지신:JS 에는 사실 클래스 가 없습니다.클래스 가 있다 고 하면 function 클래스 로 볼 수 있 습 니 다.if()문 구 를 이용 하 는 것 이 우호 적 이지 않 은 것 이 단점 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
구조 함수를 빌려 비원형을 계승하다Object {tag: Array[3]} tag: Array[3] 0: "js" 1: "html" 2: "aa" length: 3 __proto__: Array[0] __proto__: Article construc...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.