ホームページ > 記事 > ウェブフロントエンド > JS サブクラスは Object.getPrototypeOf を使用して親クラスを呼び出すにはどうすればよいでしょうか?
今回は、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 サイトの他の関連記事を参照してください。