ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript サブクラスは Object.getPrototypeOf を使用して親クラスのメソッド Analysis_JavaScript スキルを呼び出します

JavaScript サブクラスは Object.getPrototypeOf を使用して親クラスのメソッド Analysis_JavaScript スキルを呼び出します

WBOY
WBOYオリジナル
2016-05-16 17:10:33820ブラウズ

各関数には、プロトタイプと呼ばれるプロトタイプ属性があります。各オブジェクトにはプロトタイプもあり、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(); 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(); .m1( );
man.m2();


サブクラス Man で this にぶら下がっている m1 メソッドが、親クラス person にぶら下がっているメソッド 1 を呼び出します。プロトタイプ このメソッドは、親クラスのプロトタイプでメソッド 2 を呼び出します。

上記のことから、オブジェクト プロトタイプにはそのコンストラクター プロトタイプの属性が含まれるだけでなく、コンストラクター内のこのプロトタイプの属性も含まれることがわかります。もちろん、JavaScript のコンテキスト上の理由により、親クラスのこれをサブクラスで自動的に変換することはできず、これを完了するにはある程度のスキルが必要です。

Java では次のようになります


コードをコピーします

クラス person {
プライベート文字列名;

人 (文字列名) {
this.name = name;
public void メソッド 1 () {
System.out.println(this.name);
}
}
class Man extends Person{

Man(文字列名) {
super( name);
}
public void m1() {
super.method1();
}
}
public static void main(String[ ] args) {
man man1 = new Man("ジャック")
man1.m1()
}


;
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。