기능 : 프로토 타입
각 생성자는 프로토 타입 (프로토 타입, 더 이상 번역되지 않고 원본 텍스트를 사용)이라는 속성을 가지고 있습니다. 이 속성은 매우 유용합니다. 특정 클래스의 일반적인 변수 또는 함수를 선언합니다.
프로토 타입의 정의
프로토 타입 속성을 명시 적으로 선언 할 필요는 없습니다. 모든 생성자에 존재하기 때문입니다. 다음 예를 살펴볼 수 있습니다.
예 PT1
코드 사본은 다음과 같습니다.
기능 테스트 ()
{
}
경고 (test.prototype); // "Object"출력
프로토 타입에 속성을 추가하십시오
위에서 볼 수 있듯이 프로토 타입은 객체이므로 속성을 추가 할 수 있습니다. 프로토 타입에 추가 한 속성은이 생성자를 사용하여 생성 된 개체의 공통 속성이됩니다.
예를 들어, 나는 아래에 데이터 유형 물고기가 있고, 모든 물고기가 다음과 같은 특성을 갖기를 원합니다 : livesin = "water"및 price = 20; 이를 달성하기 위해 생성자 물고기의 프로토 타입에 이러한 특성을 추가 할 수 있습니다.
예 PT2
코드 사본은 다음과 같습니다.
기능 물고기 (이름, 색)
{
this.name = 이름;
this.color = 색상;
}
fish.prototype.livesin = "물";
fish.prototype.price = 20;
다음으로 몇 가지 물고기를 만들어 보자.
코드 사본은 다음과 같습니다.
var fish1 = 새로운 물고기 ( "Mackarel", "Grey");
var fish2 = 새로운 물고기 ( "금붕어", "오렌지");
var fish3 = 새로운 물고기 ( "연어", "흰색");
어떤 속성이 물고기인지 살펴 보겠습니다.
코드 사본은 다음과 같습니다.
for (int i = 1; i <= 3; i ++)
{
var fish = eval_r ( "fish"+i); // 나는이 물고기에 대한 포인터를 얻는다
ALERT (fish.name+","+fish.color+","+fish.livesin+","+fish.price);
}
출력은 다음과 같습니다.
코드 사본은 다음과 같습니다.
"Mackarel, 회색, 물, 20"
"금붕어, 오렌지, 물, 20"
"연어, 백수, 20"
당신은 모든 물고기가 살고있는 속성과 가격을 가지고 있으며, 우리는 각기 다른 물고기에 대해 이러한 속성을 구체적으로 선언하지도 않습니다. 이때 객체가 생성되면 생성자는 새 개체 __proto__의 내부 속성에 속성 프로토 타입을 할당합니다. 이 __proto__는이 객체에서 특성을 찾는 데 사용됩니다.
프로토 타입을 사용하여 모든 객체에 공통 기능을 추가 할 수도 있습니다. 여기에는 한 가지 장점이 있습니다. 객체를 구성 할 때 마다이 기능을 작성하고 초기화 할 필요가 없습니다. 이를 설명하려면 예제 DT9를 다시 살펴보고 프로토 타입을 사용하여 다시 작성해 봅시다.
프로토 타입을 사용하여 객체에 기능을 추가하십시오
예 PT3
코드 사본은 다음과 같습니다.
기능 직원 (이름, 급여)
{
this.name = 이름;
this.salary = 급여;
}
Employee.prototype.getSalary = 함수 getSalaryFunction ()
{
이것을 반환하십시오.
}
Employee.prototype.addsalary = 함수 AddSalaryFunction (추가)
{
this.salary = this.salary+추가;
}
우리는 평소와 같이 객체를 만들 수 있습니다.
코드 사본은 다음과 같습니다.
var boss1 = 신입 사원 ( "Joan", 200000);
var boss2 = 신입 사원 ( "Kim", 100000);
var boss3 = 신입 사원 ( "Sam", 150000);
그리고 그것을 확인하십시오 :
코드 사본은 다음과 같습니다.
alert (boss1.getSalary ()); // 출력 200000
alert (boss2.getSalary ()); // 100000 출력
alert (boss3.getSalary ()); // 출력 150000
다음은 프로토 타입의 작동 방식을 설명하는 다이어그램입니다. 이 객체 (Boss1, Boss2, Boss3)의 각 인스턴스에는 __proto__라는 내부 속성이 있으며,이 속성은 생성자 (직원)의 속성 프로토 타입을 가리 킵니다. GetSalary 또는 AddSalary를 실행하면이 개체는 __proto__ 에서이 코드를 찾아 실행합니다. 참고 : 여기에는 코드 사본이 없습니다 (예제 DT8 차트와 비교).