javascript uber는 초기 javascript에서 특정 메소드가 상위 클래스를 호출하도록 하기 위해 사용된 메소드입니다. uber 메소드는 Java의 super와 유사합니다.
이 기사의 운영 환경: Windows 7 시스템, JavaScript 버전 1.8.5, DELL G3 컴퓨터.
Javascript uber란 무엇인가요?
초기 JavaScript에서 uber 메소드는 메소드가 상위 클래스의 메소드를 호출할 수 있도록 하는 Java의 super와 유사합니다. Douglas Crockford는 예약어와의 충돌을 피하기 위해 super와 유사한 의미를 갖는 독일어 "über"를 사용했습니다.
그러나 Crockford는 super의 아이디어가 클래식 디자인 패턴에서는 매우 중요하지만 JavaScript의 프로토타입 및 기능 디자인 패턴에서는 불필요해 보인다고 말했습니다. JavaScript의 고전적 상속 고전 객체지향 언어는 일반적으로 부모 클래스(슈퍼 클래스)에 접근하기 위한 특별한 구문을 가지고 있기 때문에 하위 클래스의 메서드는 부모 클래스의 메서드를 사용할 수 있고, 하위 클래스와 부모 클래스의 메서드를 사용할 수 있습니다. 클래스의 이름이 동일합니다. 현대 JavaScript에는 Uber가 이 기능을 구현할 수 있는 특별한 구문이 없지만 더 번거롭습니다. 다음 예를 살펴보세요.
// inheritance helper function extend(Child, Parent) { var F = function () {}; F.prototype = Parent.prototype; Child.prototype = new F(); Child.prototype.constructor = Child; Child.uber = Parent.prototype; } // define -> augment function Shape() {} Shape.prototype.name = 'Shape'; Shape.prototype.toString = function () { return this.constructor.uber ? this.constructor.uber.toString() + ', ' + this.name : this.name; }; // define -> inherit -> augment function TwoDShape() {} extend(TwoDShape, Shape); TwoDShape.prototype.name = '2D shape'; // define function Triangle(side, height) { this.side = side; this.height = height; } // inherit extend(Triangle, TwoDShape); // augment Triangle.prototype.name = 'Triangle'; Triangle.prototype.getArea = function () { return this.side * this.height / 2; };
콘솔에 입력:
var my = new Triangle(5, 10); my.toString();
출력: "Shape, 2D Shape, Triangle"
파생된 수준은 Shape -> TwoDShape -> Triangle
확장 기능은 상속됩니다. 코드가 캡슐화되어 있습니다.
임시 생성자 F()의 역할: 하위 클래스의 속성이 변경되더라도 상위 클래스의 속성은 변경되지 않습니다.
uber 속성: 상위 클래스 프로토타입을 가리킵니다.
toString() 메서드에서 생성자의 상위 클래스 프로토타입이 존재하는지 확인합니다. 존재하는 경우 해당 toString() 메서드를 호출하여 하위 클래스에서 상위 클래스 메서드 호출을 실현합니다.
추천 학습: "JavaScript 기본 튜토리얼"
위 내용은 자바스크립트 우버가 뭐야?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!