JS サブクラスは Object.getPrototypeOf を使用して親クラスを呼び出すにはどうすればよいでしょうか?

零到壹度
リリース: 2018-03-22 11:46:09
オリジナル
1719 人が閲覧しました

今回は、Object.getPrototypeOf を使用して JS サブクラスで親クラスを呼び出す方法を説明します。以下は、エディターの足跡をたどって見てください。

各関数には、プロトタイプと呼ばれるプロトタイプ属性があります。各オブジェクトには、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 オブジェクトを新規作成し、すべてのプロパティを出力します。

ECMAScript V5 は静的な getPrototypeOf メソッドを Object に追加します (Firefox/Chrome はそれを実装しています) )、オブジェクトのプロトタイプを取得するために使用されます。 Java のスーパーを模倣するために使用できます。

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 の this にぶら下がっている m1 メソッドは、親クラス Person の this にぶら下がっているメソッド 1 を呼び出し、プロトタイプにぶら下がっている m2 メソッドは、親クラスのプロトタイプのメソッド 2 を呼び出します。

上記のことから、オブジェクト プロトタイプにはそのコンストラクター プロトタイプの属性が含まれるだけでなく、コンストラクター内のこのプロトタイプの属性も含まれることがわかります。もちろん、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 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
js
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!