简体   繁体   中英

Javascript Classes Sharing Functions?

Let's say I have two classes, one called Rectangle and one called Circle. Both classes have the values X and Y, is there a way to define the variables and functions once for both of the classes? Read the code below if it explains it better:

function Rectangle(msg, font){
    this.msg = msg;
    this.font = font;
}

function Circle(radius){
    this.radius = radius;
}

Rectangle && Circle { 

/* had no idea how to write the line above, 
but basically for both the rectangle and the circle, 
there is this code so I don't have to rewrite it for both.*/

    this.position = function(x, y){
        this.x = x;
        this.y = y;
    }
}

Yes, there is:

//creating class shape
function Shape(x,y){
    this.x = x;
    this.y = y;
};
//set position function
Shape.prototype.position = function(x,y){
    this.x = x;
    this.y = y;        
};

function Rectangle(msg,font,x,y){
    //calling object Shape
    Shape.call(this,x,y);
    this.msg = msg;
    this.font = font;
}
//inheriting object Shape
Rectangle.prototype=Object.create(Shape.prototype);

function Circle(radius,x,y){
    //calling object Shape
    Shape.call(this,x,y);
    this.radius = radius;
}
//inheriting object Shape
Circle.prototype=Object.create(Shape.prototype);

You can now call any function defined in Shape from a Rectangle or Circle object. Hope this helps.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM