2017-06-23 17 views
0

javascriptで親オブジェクトを使用して子メソッドを呼び出すにはどうしたらいいですか?JavaScriptで親オブジェクトを使用して子メソッドを呼び出すにはどうすればよいですか?

var Shape = function() { } 
    Shape.prototype.draw = function() { 
     return "Generic shape called "; 
    } 

    var Circle = function() { } 
    Circle.prototype = Object.create(Shape.prototype); 
    Circle.prototype.draw = function() { 
     return "I am from Circle"; 
    } 

    var Rectangle = function() { } 
    Rectangle.prototype = Object.create(Shape.prototype); 
    Rectangle.prototype.draw = function() { 
     return "I am from Rectangle"; 
    } 

    var Triangle = function() { } 
    Triangle.prototype = Object.create(Shape.prototype); 

私は長方形、円などの任意のオーバーライドされたメソッドにいずれかにアクセスしたいが、我々は何ができるかをC#でのようなShapeオブジェクトを使用して:形状形状=新しいサークル()shape.draw();それは(あなたがinstanceof演算子を使用して実行時にチェックすることができます)あなたをclass.Iがあなたのコード内でShapeの任意のサブクラスを使用している場合、どのように私はそれを

+1

かなりOOを鳴らない "親オブジェクトを使用して、子メソッドを呼び出します"。あなたの例では、どのメソッドを呼び出そうとしているのかわかりません。 – Jacques

+0

正確に何をしたいですか?どの子メソッド?どちらの親メソッド? –

+0

私はRectangle、Cirlceのようなオーバーライドされたメソッドにアクセスしたいですが、C#のようにShapeオブジェクトを使用してください#Shape shape = new Circle() shape.draw();それは子クラスのオーバーライドされたメソッドを呼び出します。私はそれを達成することができますどのようにJavaスクリプトで同じことをしたい。 –

答えて

0

を達成することができますJavaScriptで同じことをやりたい子のオーバーライドされたメソッドを呼び出します。メソッドを簡単に呼び出すことができます。 Jsランタイムは自動的にプロトタイプチェーンから適切なメソッドを呼び出します。あなたは、コード内のオブジェクトを持っているのであれば、次のことができ、myshapeと呼ばれる:

if(myshape instanceof Shape){

// invoke draw method 
    myshape.draw(); 
} 
0

var Shape = function() { } 
 
    Shape.prototype.draw = function() { 
 
     return "Generic shape called "; 
 
    } 
 
    Shape.prototype.val = 10; 
 

 
    var Circle = function() { } 
 
    Circle.prototype = Object.create(Shape.prototype); 
 
    Circle.prototype.draw = function() { 
 
     return "I am from Cirlce"; 
 
    } 
 

 
    var Rectangle = function() { } 
 
    Rectangle.prototype = Object.create(Shape.prototype); 
 
    Rectangle.prototype.draw = function() { 
 
     return "I am from Rectangle"; 
 
    } 
 

 
    var Triangle = function() { } 
 
    Triangle.prototype = Object.create(Shape.prototype); 
 
    Triangle.prototype.draw = function() { 
 
     return "I am from Triangle"; 
 
    } 
 
     
 
    //Using Up casting (access value of parent object) 
 
    var newCircle = new Circle(); 
 
    alert("newCircle: "+newCircle.draw()+" : "+newCircle.val);

関連する問題