各関数には、プロトタイプと呼ばれるプロトタイプ属性があります。各オブジェクトにはプロトタイプもあり、Firefox/Safari/Chrome/Opera の __proto__ を通じてアクセスできます。IE6/7/8 には関連するインターフェイスがありません。
次のようにコードをコピーします。
関数 人(){
this.method1 = function(){}
}
Person.prototype.method2 = function(){}
関数 Man(){}
Man.prototype = 新しい人();
Man.prototype.m1 = function(){}
Man.prototype.m2 = function(){}
var m = 新しい Man();
for(m.__proto__ の変数 a){
アラート(a);
}
親クラス Person とサブクラス Man が定義されています。 Man オブジェクトを新規作成し、すべてのプロパティを出力します。
ECMAScript V5 は、オブジェクトのプロトタイプを取得するために、静的な getPrototypeOf メソッドを Object (Firefox/Chrome によって実装) に追加します。 Java のスーパーを模倣するために使用できます。
次のようにコードをコピーします。
関数 人(){
this.method1 = function(){alert(1)}
}
Person.prototype.method2 = function(){alert(2);}
関数 Man(){
this.m1 = function(){
Object.getPrototypeOf(this).method1();
}
}
Man.prototype = new Person();//プロトタイプの継承
Man.prototype.m2 = function(){
Object.getPrototypeOf(this).method2();
}
var man = 新しい Man();
man.m1();
man.m2();
サブクラス Man の this にぶら下がっている m1 メソッドは、親クラス person の this にぶら下がっているメソッド 1 を呼び出し、プロトタイプにぶら下がっている m2 メソッドは、親クラスのプロトタイプのメソッド 2 を呼び出します。
上記のことから、オブジェクト プロトタイプにはそのコンストラクター プロトタイプの属性が含まれるだけでなく、コンストラクター内のこのプロトタイプの属性も含まれることがわかります。もちろん、JavaScript のコンテキスト上の理由により、親クラスのこれをサブクラスで自動的に変換することはできず、これを完了するにはある程度のスキルが必要です。
これがJavaでどのように機能するかです
次のようにコードをコピーします。
パッケージbao1;
クラス人 {
プライベート文字列名。
人(文字列名) {
this.name = 名前;
}
public void メソッド1() {
System.out.println(this.name);
}
}
クラス Man は Person{ を拡張します
Man(文字列名) {
スーパー(名前);
}
public void m1() {
super.method1();
}
}
パブリック クラス テスト {
public static void main(String[] args) {
マン man1 = 新しいマン("ジャック");
man1.m1();
}
}