이 기사에서는 JavaScript의 클래스 및 인스턴스의 구현 방법에 대해 설명합니다. 참조를 위해 공유하십시오. 세부 사항은 다음과 같습니다.
JavaScript에는 부모 수업, 아동 수업 및 수업 및 인스턴스의 개념이 없습니다. 그것은 모두 상속을 달성하기 위해 프로토 타입 체인에 달려 있습니다. 객체의 특성을 찾을 때 JavaScript는 해당 속성이 발견 될 때까지 프로토 타입 체인을 위쪽으로 통과합니다. JavaScript가 클래스 및 인스턴스의 개념을 시뮬레이션 할 수있는 몇 가지 방법이 있습니다.
1. 생성자를 직접 사용하여 객체를 생성하고이를 사용하여 생성자 내부의 객체 인스턴스를 참조하십시오.
다음과 같이 코드를 복사하십시오 : function animal () {
this.name = "동물";
}
Animal.Prototype.Makesound = function () {
Console.log ( "동물 사운드");
}
[기능]
var 동물 1 = 새로운 동물 ();
동물 1. 이름;
'동물'
동물 1.makesound ();
동물 소리
또 다른 예를 살펴 보겠습니다.
다음과 같이 코드를 복사하십시오 : 함수 포인트 (x, y) {
this.x = x;
this.y = y;
}
point.prototype = {
방법 1 : function () {console.log ( "method1"); },
방법 2 : function () {console.log ( "method2"); },
}
{method1 : [function], method2 : [function]}
var point1 = 새로운 포인트 (10, 20);
point1.method1 ();
방법 1
point1.method2 ();
방법 2
위와 같이, 먼저 생성자 객체의 프로토 타입 속성을 지정하십시오. 그런 다음 객체의 인스턴스를 새로 사용하면 프로토 타입에 지정된 메소드를 호출 할 수 있습니다.
2. 개체를 사용하여 () 메소드를 사용하여 객체를 만듭니다
다음과 같이 코드를 복사하십시오 : var 동물 = {
이름 : "동물",
MOSSOUND : function () {console.log ( "Animal Sound"); },
}
var animal2 = object.create (동물);
동물성 2.name;
'동물'
Console.log (Animal2.name);
동물
동물성 2.makesound ();
동물 소리
이 방법은 생성자 방법보다 간단하지만 개인 속성 및 개인 메소드를 구현할 수는 없으며 인스턴스 객체간에 데이터를 공유 할 수 없으므로 클래스 시뮬레이션은 여전히 포괄적이지 않습니다.
3. 네덜란드 프로그래머 Gabor de Mooij가 제안한 미니멀리스트 접근. 권장 사용.
다음과 같이 코드를 복사하십시오 : var 동물 = {
init : function () {
var 동물 = {};
Animal.name = "동물";
Animal.makesound = function () {console.log ( "Animal Sound"); };
반환 동물;
}
};
var animal3 = 동물성 ();
동물 3.name;
'동물'
동물성 3.makesound ();
동물 소리
프로토 타입과 이것을 사용하지 않으면 생성자 init 만 사용자 정의하면됩니다. 상속 된 구현도 매우 간단합니다.
다음과 같이 코드를 복사하십시오 : var cat = {
init : function () {
var cat = Animal.init ();
cat.name2 = "고양이";
cat.makesound = function () {console.log ( "cat sound"); };
cat.sleep = function () {console.log ( "cat sleep"); };
귀환 고양이;
}
}
var cat = cat.init ();
고양이 이름; // '동물'
cat.name2; // '고양이'
cat.makesound (); // 메소드 과부하와 유사합니다
고양이 소리
cat.sleep ();
고양이 수면
개인 부동산 및 개인 방법 사용 :
다음과 같이 코드를 복사하십시오 : var 동물 = {
init : function () {
var 동물 = {};
var sound = "개인 동물 사운드"; // 비공개 속성
Animal.makesound = function () {console.log (sound); };
반환 동물;
}
};
var 동물 4 = 동물성 ();
동물성; // 정의되지 않은 개인 속성은 객체의 자체 방법을 통해서만 읽을 수 있습니다.
동물성; // 정의되지 않은 개인 속성은 오브젝트 자체 방법을 통해서만 읽을 수 있습니다.
동물성 4.makesound ();
개인 동물 사운드
동물 대상에 정의되지 않은 속성과 방법이 비공개 인 한 외부 세계에서 액세스 할 수 없습니다.
클래스와 인스턴스간에 데이터 공유를 달성 할 수 있습니다.
다음과 같이 코드를 복사하십시오 : var 동물 = {
소리 : "일반적인 동물 사운드",
init : function () {
var 동물 = {};
Animal.commonsound = function () {console.log (Animal.sound); };
Animal.Changesound = function () {Animal.sound = "Common Animal Sound Changed"; };
반환 동물;
}
}
var animal5 = Animal.init ();
var animal6 = Animal.init ();
동물성; // 클래스 속성으로 간주 될 수 있습니다
'일반적인 동물 사운드'
동물 5.sound; // 인스턴스 객체는 클래스 속성에 액세스 할 수 없습니다
한정되지 않은
동물 6. 사운드;
한정되지 않은
동물성 5.commonsound ();
일반적인 동물 소리
동물 6.commonsound ();
일반적인 동물 소리
동물성 5.changesound (); // 클래스 속성을 수정합니다
한정되지 않은
동물성;
'일반적인 동물 사운드'
동물성 5.commonsound ();
일반적인 동물 소리
동물 6.commonsound ();
일반적인 동물 소리
예를 들어, Animal.sound는 클래스 및 인스턴스의 공유 속성으로 클래스 속성 및 클래스 방법으로 간주 될 수 있습니다.
인스턴스가 공통 속성을 변경하면 클래스 및 기타 인스턴스의 공통 속성도 그에 따라 수정됩니다.
요약하면, 그것은 JavaScript에서 시뮬레이션 된 클래스 및 인스턴스의 개념과 사용입니다.
이 기사가 모든 사람의 JavaScript 프로그래밍에 도움이되기를 바랍니다.