//プロトタイプの継承を使用し、一時オブジェクトをMiddle は Child のプロトタイプ属性であり、一時オブジェクトのプロトタイプ属性は親クラスのプロトタイプを指します。
//すべてのサブクラスと親クラスのプロトタイプ属性が同じオブジェクトを指すことを防ぎます。
//こうすることで、サブクラスのプロトタイプ属性が変更されても、他のサブクラスや親クラスには影響しません。
function extend(Child, Parent) {
var F = function(){};プロトタイプ = Parent.prototype;
Child.prototype = new F ();
Child.base = Parent.prototype; function Parent(name)
{
this.aa = 123;
this.getName = function() {return name;}; //クロージャを使用してプライベート メンバーをシミュレートします。 (値){名前=値;};
}
Parent.prototype.print = function(){alert("print!");};
Parent.prototype.hello = function()
{
alert(this.getName() "Parent ")
};
function Child(name,age)
{
Parent.apply(this, argument) ;//親クラスのコンストラクターを呼び出して、親クラスで定義されたプロパティを継承します。
this.age = age;
extend(Child,Parent) //親クラスを継承します。
Child.prototype.hello = function() //親クラスの hello メソッドをオーバーライドします。
{
alert(this.getName() "Child");
Parent.prototype.hello. apply(this,arguments); //同じ名前の親クラスのメソッドを呼び出します
};
//サブクラスのメソッド
Child.prototype.doSomething = function(){alert(this.age " doSomething"); };
var p1 = new Child("xhan", 22);
var p2 = new Child("xxx",33);
p1.hello();
p1 .doSomething(); // 親クラスのメソッド
alert(p1 子のインスタンス); //true
alert(p1 親のインスタンス); //true