如何在JavaScript中使用父对象调用子方法?

如何在JavaScript中使用父对象调用子方法?,javascript,Javascript,我想在javascript中使用父对象调用子方法我该怎么做 var Shape = function () { } Shape.prototype.draw = function () { return "Generic shape called "; } var Circle = function () { } Circle.prototype = Object.create(Shape.prototype); Circle.proto

我想在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=new Circle Shape.draw;它将调用子类的重写方法。我想在javascript中做同样的事情如何实现它

如果您在代码中使用Shape的任何子类,您可以在运行时使用instanceof操作符检查,您可以简单地调用该方法。Js运行时将自动从原型链调用正确的方法。因此,如果代码中有一个名为myshape的对象,则可以:

ifmyshape形状实例{

var Shape=函数{} Shape.prototype.draw=函数{ 返回调用的通用形状; } Shape.prototype.val=10; 变量圆=函数{} Circle.prototype=Object.createShape.prototype; Circle.prototype.draw=函数{ 我是从Cirlce回来的; } 变量矩形=函数{} Rectangle.prototype=Object.createShape.prototype; Rectangle.prototype.draw=函数{ 返回我是从矩形; } 变量三角形=函数{} Triangle.prototype=Object.createShape.prototype; Triangle.prototype.draw=函数{ 我是从三角形回来的; } //使用父对象的上转换访问值 var newCircle=新的循环;
alertnewCircle:+newCircle.draw+:+newCircle.val;使用父对象调用子方法听起来不太像OO。在您的示例中,我也看不到您试图调用哪个方法?您到底想做什么?哪个子方法?哪个父方法?我想访问任何被重写的方法,如矩形,Cirlce任何一个,但使用Shape对象like在c中我们可以做什么:Shape Shape=new Circle Shape.draw;它将调用子类的重写方法。我想在java脚本中做同样的事情,我如何实现它。方法基本相同。如果实例化一个圆,它在其原型上定义了一个draw方法,那么circleInstance.draw将调用该方法。
    // invoke draw method
   myshape.draw();
}