>  기사  >  웹 프론트엔드  >  JS 하위 클래스는 어떻게 Object.getPrototypeOf를 사용하여 상위 클래스를 호출합니까?

JS 하위 클래스는 어떻게 Object.getPrototypeOf를 사용하여 상위 클래스를 호출합니까?

零到壹度
零到壹度원래의
2018-03-22 11:46:091735검색

이번에는 JS 하위 클래스에서 상위 클래스를 호출하기 위해 Object.getPrototypeOf를 사용하는 방법을 보여 드리겠습니다. 다음은 편집자의 발자취를 따라 살펴보세요.

각 함수에는 프로토타입이라는 프로토타입 속성이 있습니다. 각 객체에는 Firefox/Safari/Chrome/Opera라는 프로토타입도 있습니다. __proto__를 통해 접근할 수 있으며, IE6/7/8에서는 관련 인터페이스가 제공되지 않습니다.

function Person(){
this.method1 = function(){}
}
Person.prototype.method2 = function(){}
function Man(){}
Man.prototype = new Person();
Man.prototype.m1 = function(){}
Man.prototype.m2 = function(){}
var m = new Man();
for(var a in m.__proto__){
alert(a);
}

는 상위 클래스인 Person과 하위 클래스인 Man을 정의합니다. Man 객체를 새로 만들고 모든 속성을 인쇄합니다.

ECMA스크립트 V5에서는 Object에 정적 getPrototypeOf 메소드를 추가합니다(Firefox/Chrome에서 이를 구현했습니다). ), 객체의 프로토타입을 얻는 데 사용됩니다. Java의 super를 모방하는 데 사용할 수 있습니다.

function Person(){
this.method1 = function(){alert(1)}
}
Person.prototype.method2 = function(){alert(2);}
function Man(){
this.m1 = function(){
Object.getPrototypeOf(this).method1();
}
}
Man.prototype = new Person();//原型继承
Man.prototype.m2 = function(){
Object.getPrototypeOf(this).method2();
}
var man = new Man();
man.m1();
man.m2();


하위 클래스 Man에서 이것에 걸려 있는 m1 메소드는 상위 클래스 Person에서 이것에 걸려 있는 method1을 호출하고, 프로토타입에 걸려 있는 m2 메소드는 상위 클래스 프로토타입에 있는 method2를 호출합니다.

위에서 볼 수 있듯이 객체 프로토타입에는 생성자 프로토타입의 속성이 포함될 뿐만 아니라 생성자에 이에 대한 속성도 포함되어 있습니다. 물론 JavaScript의 컨텍스트상의 이유로 부모 클래스의 이 작업은 하위 클래스에서 자동으로 변환될 수 없으며 이를 완료하려면 일부 기술이 필요합니다.

이것이 Java에서 작동하는 방식입니다

package bao1;
class Person {
    private String name;
    Person(String name) {
      this.name = name;
  }
  public void method1() {
      System.out.println(this.name);
    }
  }
      class Man extends Person{
        Man(String name) {
          super(name);
    }
    public void m1() {
       super.method1();
      }
    }
     public class Test 
     {public static void main(String[] args) {
     Man man1 = new Man("Jack");man1.m1();
    }
  }

위 내용은 JS 하위 클래스는 어떻게 Object.getPrototypeOf를 사용하여 상위 클래스를 호출합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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