각 함수에는 프로토타입이라는 프로토타입 속성이 있습니다. 각 개체에는 Firefox/Safari/Chrome/Opera에서 __proto__를 통해 액세스할 수 있는 프로토타입도 있습니다. IE6/7/8에는 관련 인터페이스가 제공되지 않습니다.
다음과 같이 코드 코드를 복사합니다.
함수 사람(){
this.method1 = 함수(){}
}
Person.prototype.method2 = 함수(){}
함수 Man(){}
Man.prototype = 새로운 사람();
Man.prototype.m1 = 함수(){}
Man.prototype.m2 = 함수(){}
var m = 새로운 사람();
for(var a in m.__proto__){
경고(a);
}
상위 클래스인 Person과 하위 클래스인 Man이 정의됩니다. Man 객체를 새로 만들고 모든 속성을 인쇄합니다.
ECMAScript V5는 객체의 프로토타입을 얻기 위해 Object(Firefox/Chrome으로 구현)에 정적 getPrototypeOf 메소드를 추가합니다. Java의 super를 모방하는 데 사용할 수 있습니다.
다음과 같이 코드 코드를 복사합니다.
함수 사람(){
this.method1 = 함수(){alert(1)}
}
Person.prototype.method2 = function(){alert(2);}
함수 남자(){
this.m1 = 함수(){
Object.getPrototypeOf(this).method1();
}
}
Man.prototype = new Person();//프로토타입 상속
Man.prototype.m2 = 함수(){
Object.getPrototypeOf(this).method2();
}
var 남자 = 새로운 남자();
man.m1();
man.m2();
하위 클래스 Man의 this에 걸려 있는 m1 메서드는 상위 클래스 Person의 this에 걸려 있는 method1을 호출하고, 프로토타입에 걸려 있는 m2 메서드는 상위 클래스 프로토타입의 method2를 호출합니다.
위에서 볼 수 있듯이 객체 프로토타입은 생성자 프로토타입에 대한 속성을 포함할 뿐만 아니라 생성자에 이에 대한 속성도 포함합니다. 물론 JavaScript의 컨텍스트상의 이유로 인해 부모 클래스의 이 내용은 하위 클래스에서 자동으로 변환될 수 없으며 이를 완료하려면 일부 기술이 필요합니다.
이것이 Java에서 작동하는 방식입니다.
다음과 같이 코드 코드를 복사합니다.
패키지 bao1;
클래스 사람 {
개인 문자열 이름;
사람(문자열 이름) {
this.name = 이름;
}
공개 무효 메소드1() {
System.out.println(this.name);
}
}
Man 클래스는 Person{을 확장합니다.
Man(문자열 이름) {
슈퍼(이름);
}
공공 무효 m1() {
super.method1();
}
}
공개 클래스 테스트 {
공개 정적 무효 메인(String[] args) {
Man man1 = new Man("잭");
man1.m1();
}
}