>웹 프론트엔드 >JS 튜토리얼 >JavaScript_javascript 기술의 객체지향 기술 시뮬레이션에 대한 간략한 토론

JavaScript_javascript 기술의 객체지향 기술 시뮬레이션에 대한 간략한 토론

WBOY
WBOY원래의
2016-05-16 19:25:48913검색

1. 소개
C#과 Java 언어에서는 객체지향이 클래스, 특히 상속의 형태로 구현됩니다. 클래스 상속은 강력한 기능을 보여주며 배우기 쉽습니다. JavaScript는 순수한 객체 지향 언어가 아니라 객체 기반 언어입니다. 객체 상속은 처음 접할 때 이해하지 못하는 경우가 많지만 JavaScript는 기본적으로 구현됩니다. 객체지향 기술은 실현 가능할 뿐만 아니라 객체지향 기술에 대한 동적 상속 기능도 제공합니다. 이 기사에서는 주로 JavaScript의 객체지향 기술에 대해 설명합니다.
2. 프로토타입 객체 개요
모든 JavaScript 객체에는 프로토타입 객체가 있으며, 객체는 프로토타입 객체의 모든 속성을 상속합니다. 객체의 프로토타입은 객체를 생성하는 생성자에 의해 정의됩니다. JavaScript의 모든 함수에는 프로토타입 객체를 참조하는 프로토타입이라는 속성이 있습니다. 프로토타입 객체가 초기화되면 생성자 속성만 프로토타입 객체를 생성한 객체를 참조합니다. JavaScript에는 클래스를 정의하는 클래스 개념이 없습니다. 생성자는 클래스를 정의하고 클래스의 속성을 초기화합니다. 즉, 프로토타입 객체는 동일한 속성을 상속합니다. 클래스의 인스턴스가 공유하는 동일한 속성으로 인해 메모리가 절약됩니다.
JavaScript는 개체의 속성을 읽을 때 먼저 개체에서 검색합니다. 찾을 수 없으면 프로토타입 개체에서 속성(또는 메서드)을 검색합니다. 따라서 특히 메서드의 경우 다음을 수행하는 것이 가장 좋습니다. 공유를 용이하게 하고 메모리를 절약하기 위해 프로토타입 객체에 저장합니다. 프로토타입 객체에는 강력한 기능도 있습니다. 즉, 생성자를 통해 일부 객체를 인스턴스화한 다음 생성자의 프로토타입 객체에 속성과 메서드를 추가하면 원래 인스턴스화된 객체 인스턴스는 추가된 속성과 메서드를 상속합니다.
3. 객체 속성, 객체 메서드, 클래스 속성, 클래스 메서드
각 객체에는 인스턴스 속성과 인스턴스 메서드의 별도 복사본이 있습니다. 5개의 개체가 인스턴스화되면 인스턴스 속성의 복사본도 5개가 됩니다. 및 인스턴스 메소드. 이 키워드는 인스턴스 객체를 참조합니다. 즉, 인스턴스 메소드를 작동하는 사람은 누구인지, 어떤 인스턴스 객체 속성에 액세스하는지, 인스턴스 객체를 참조하는지를 나타냅니다.
클래스 메서드와 클래스 속성의 복사본은 하나만 있습니다. 클래스 메서드를 호출할 때 클래스 이름을 인용해야 합니다. 예: Date.setHours()
아래에서는 인스턴스를 나타내는 프로그램이 사용됩니다. 속성, 인스턴스 메서드, 클래스 속성, 클래스 메서드

코드 복사 코드는 다음과 같습니다.
function Mobile(kind,brand) {
this.kind=kind;//GSM/CDMA 등 휴대폰 종류 정의
  this.brand=brand;//휴대폰의 브랜드 정의 mobilephone에서 this 키워드는 이 생성자로 인스턴스화된 객체를 나타냅니다
 }
 
 /**//*
  클래스 정의의 두 번째 단계는 생성자의 프로토타입 객체에 인스턴스 메서드나 기타 속성을 정의하는 것입니다.
이 객체에 의해 정의된 모든 속성은 이 클래스의 모든 인스턴스에 상속됩니다.
 
*/
  //Dial, 여기서는 전화번호만 반환합니다
 Mobile.prototype .dial = function(phoneNo) {
returnphoneNo;
 } ;
 
 
 /**//*
클래스 정의의 세 번째 단계는 클래스 메소드, 상수 및 기타 필요한 클래스 속성을 생성자의 프로토타입 객체 속성이 아닌 생성자 자체의 속성으로 정의하는 것입니다.
클래스 메소드는 실제 인수에 대해서만 작동하기 때문에 this 키워드는 사용되지 않습니다.
*/
 //켜기 및 끄기 방법
 모바일 .turnOn=function() {
  return "휴대폰의 전원이 켜져 있습니다.";
 }
 Mobile.turnOff=function() {
  return "휴대폰의 전원이 꺼져 있습니다."
 }
 

 
  // 클래스 속성은 상수로 사용할 수 있으므로 실제로는 읽기 전용이 아닙니다.
  Mobile.screenColor=64K // 이러한 유형의 모바일에서는 화면 색상이 가정됩니다. 휴대폰은 모두 64K 컬러 화면입니다
4. 서브클래싱
JavaScript는 서브클래싱을 지원합니다. 슈퍼 클래스를 사용하여 서브클래스의 프로토타입 객체만 인스턴스화하면 됩니다. 그러나 서브클래싱 후에는 문제가 있다는 점에 유의해야 합니다. 하위 클래스의 프로토타입 객체를 슈퍼클래스로 인스턴스화하여 획득하므로 JavaScript에서 제공하는 자체 생성자 속성을 플러시하여 생성자의 정확성을 보장하려면 하위 클래스 프로그램의 예를 다시 지정해야 합니다.
/***** 서브클래싱 *****/
//다음은 하위 클래스 생성자입니다.Smartphone
function SmartPhone(os)
{
this.os=os

}
//Mobile 객체를 프로토타입으로 사용합니다
//이는 새 클래스의 인스턴스가 SmartPhone.prototype을 상속한다는 의미입니다.
//후자는 Mobile.prototype에서 상속됩니다
//Mobile.prototype은 Object.prototype에서 상속됩니다
SmartPhone.prototype=new Mobile(GSM,Nokia)
//다음은 이메일을 보내기 위해 하위 클래스에 새 메서드를 추가합니다. return Email address
SmartPhone.prototype.sendEmail=function(emailAddress) {
return this.emailAddress
}
//위의 하위 클래스화 방법에는 SmartPhone.prototype을 명시적으로 설정했기 때문에 약간의 결함이 있습니다. 우리가 만든 객체가 되므로 JS
//에서 제공하는 프로토타입 객체를 덮어쓰고 지정된 생성자 속성을 삭제합니다. 이 속성은 이 객체를 생성한 생성자를 참조합니다. 그러나 SmartPhone 객체는 상위 클래스의
//생성자를 통합하며, 속성을 명시적으로 설정하면 이 문제를 해결할 수 있습니다.
SmartPhone.prototype.constructor=SmartPhone; var objSmartPhone= new SmartPhone();//하위 클래스 인스턴스화
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.