>웹 프론트엔드 >JS 튜토리얼 >JavaScript: 기본 상속 메커니즘

JavaScript: 기본 상속 메커니즘

高洛峰
高洛峰원래의
2016-11-25 11:26:30849검색

이전 단계에서는 Java 프로그래밍을 하고 있었습니다. 갑자기 과제를 받고 ASP를 배웠기 때문에 늘 JavaScript를 사용하여 ASP 프로그램을 만드는 것에 관심이 많고 능숙했습니다.
 
JavaScript의 확실한 장점은 자체 개체를 정의하고 보유할 수 있다는 것입니다. 이것은 VBScript와 비교할 수 없는 것 같습니다.
이를 통해 JavaScript를 객체지향에 가까운 프로그래밍에 사용할 수 있습니다. 어쩌면 이렇게 하면 웹사이트 개발이 더 재미있어질지도 모르겠네요...
 
 하지만 심각한 단점이 있습니다! JavaScript는 상속 메커니즘을 지원하지 않습니다. Java와 달리 확장 키워드를 지원하지 않습니다(이 키워드는 JavaScript의 예약어임에도 불구하고).
 
Microsoft의 ASP.NET에서는 JavaScript가 비교적 완전한 지원을 제공하기 시작했습니다. 물론, PHP 언어도 상속 메커니즘을 지원하므로 저는 선호합니다...
 
하지만 이제 학교 선배들에게 더 나은 도메인 이름 공간을 구입하도록 설득할 수는 없지만 저는 그렇게 하지 않습니다. ASP의 상속 메커니즘 부족을 견디고 싶지 않습니다. 그 고통 때문에 절박함 속에서 지혜를 얻었고 어떤 결과를 얻었습니다!
 
 JavaScript는 상속 메커니즘을 전혀 지원하지 않습니다! 그건 확실해요. 그러나 우리는 몇 가지 트릭을 수행하고 이를 시뮬레이션하는 방법을 생각할 수 있습니다.
말도 안 되는 이야기를 많이 한 후 먼저 예를 살펴보겠습니다.

function Person()
{
public: // 주의할 점은 public이 없다는 것입니다! 이런 사용법은 그냥 내 습관입니다. 다행히 실제 적용에는 문제가 없습니다
this.GetName=Person_mfGetName;

private: // public과 마찬가지로 이것도 내 습관입니다
this. m_strName="Guest";
}

function Person_mfGetName()
{
return this.m_strName;
}

var MyPerson=new Person();
MyPerson.GetName ();

모든 출력 문을 사용하여 결과를 볼 수 있습니다. 물론 이것은 단지 첫 번째 단계일 뿐입니다!
핵심 단계는 바로 상속입니다! this.Super() // 이 방법으로 "부모 클래스 생성자"를 호출할 수 있습니다. "상위 클래스"는 모든 속성과 메서드를 "상속"합니다.


private:
this.m_nStudentID=0;
}

GetName( in Student) 은 표시되지 않지만) 메서드이지만 호출할 수 있습니다. 왜냐하면 그는 Person의 GetName() 메소드를 상속받았기 때문입니다.


var MyStudent=new Student();
MyStudent.GetName(); // "부모 클래스"의 GetName 메서드가 호출되고 결과는 "Guest"를 반환하는 것입니다.

이상으로 JavaScript 상속 구현에 관한 내용입니다. 두 단계만 기억하세요.

 
 1: 먼저 "하위 클래스"에서 "상위 클래스"를 가리키는 함수를 정의합니다(어떤 이름이든 사용할 수 있습니다. 저는 Super를 사용하는 데 익숙합니다)

 2: 그런 다음 호출합니다. 이 함수

 
 이렇게 하면 "부모 클래스"의 모든 속성과 메서드를 상속받을 수 있습니다!



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