Java, C#, VB를 공부한 사람이라면 누구나 클래스의 개념을 알고 있으며, 클래스에는 상속, 캡슐화, 다형성 등의 기능이 있습니다. 자바스크립트는 객체지향 언어가 아니라 해석형 언어입니다.
그러나 JavaScript를 사용하여 상속과 다형성을 구현할 수도 있습니다.
Javascript 구현 클래스에는 다양한 메소드가 있습니다.
방법 1: 시공방법.
코드
함수 코더(){
this.name = '샤오왕';
this.job = '프로그래머';
this.coding = function ()
{
alert('코드를 작성 중입니다');
}
}
var coder=new coder();
alert(coder.name);
coder.coding()
방법 2: 팩토리 메소드 .
코드
function createCoderFactory(){
var obj=new Object();
obj.name = '샤오 왕';
obj.job = '프로그래머'
obj.coding = function(){
alert( '코드 작성 중');
return obj;
var coder = createCoderFactory()
coder.coding() ;
그러나 팩토리 메소드와 생성자 메소드 모두 동일한 단점이 있습니다. 즉, 인스턴스가 생성될 때마다 클래스의 모든 함수가 인스턴스화됩니다.
방법 3: 프로토타입 체인.
코드
coder.prototype.name = '샤오 왕';
coder.prototype.job = '프로그래머';
coder.prototype.coding = function(){
alert('작성 중입니다. code' );
var coder();
alert(coder.name);
책에서 다음과 같이 말했습니다: 프로토타입 체인의 단점은 하나의 인스턴스가 변경되는 한 모든 속성이 공유된다는 것입니다. 테스트 내용은 다음과 같습니다.
코드 복사
coder2.name = 'Old Wang'; Alert(coder1.name) ; /*이것은 "Xiao Wang"을 표시합니다. 책에 따르면 "Lao Wang"이 표시되어야 합니다.*/
alert(coder2.name) /*이것은 "Lao Wang"을 표시합니다*/
alert(coder1 .name); 책에 따르면 "Lao Wang"이 표시되어야 하는데 여기서는 "Xiao Wang"이 표시되어 책이 잘못되었습니다.
방법4 : 혼합방법.
위 세 가지 유형은 모두 단점이 있으므로 개선이 필요합니다.
코드 복사
coder.prototype.coding = function(){
alert('코드를 작성 중입니다.'); 🎜> };
방법 5: 동적 원본 체인.
처음 세 가지 단점을 해결하는 또 다른 방법이 있습니다.
코드
코드 복사
코드는 다음과 같습니다.
{
alert('코드를 작성 중입니다');
this._init = true
}
이 방법은 어떤가요? 처음 사용하는 경우 _init가 초기화되지 않았기 때문에 코딩 함수를 인스턴스화하기 위해 다음 코드가 실행됩니다. 나중에 다시 실행되지 않으므로 함수는 한 번만 인스턴스화됩니다.