I create One Parent class and Two Child classes.Two Child classes each have a method to calculate the value of Area.
Whenever I call a7.areaPrint(). It shows me undefined. But I can get the result by c7.calculate() && s7.calculate() in console.
How can I pass those two area value to Parent class and Print it?
c7.calculate() && s7.calculate() will be printed on Parent class.
function myExtend(Parent, Child) {
Child.prototype = Object.create(Parent.prototype)
Parent.prototype.constructor = Parent
}
function Area(circleArea, squareArea) {
this.areaPrint = function () {
console.log("The Circle area is: " + Circle.call(this, circleArea))
console.log("The Square area is: " + Square.call(this, squareArea))
}
}
function Circle(r) {
this.radius = r
this.calculate = function () {
var circleArea = (Math.PI * Math.sqrt(this.radius, 2)).toFixed(2)
return circleArea;
}
}
function Square(s) {
this.side = s
this.calculate = function () {
var squareArea = (Math.sqrt(this.side, 2)).toFixed(2)
return squareArea;
}
}
//Create Prototype(Area > Circle)
myExtend(Area, Circle)
//Prototype Member
Circle.prototype.perimeter = function (D) {
return (Math.PI * D).toFixed(2)
}
//Create Prototype(Area > Square)
myExtend(Area, Circle)
var c7 = new Circle(5)
var s7 = new Square(5)
var a7 = new Area()
console.log()
a7.areaPrint()Advertisement
Answer
Not sure if I understand your question.
Up to what I understand that needs fix, you need to pass the arguments in in the line var a7 = new Area() -> var a7 = new Area(c7, s7) and in the area calculate code from Circle.call(this, circleArea) to the function call circleArea.calculate().
function myExtend(Parent, Child) {
Child.prototype = Object.create(Parent.prototype)
Parent.prototype.constructor = Parent
}
function Area(circleArea, squareArea) {
this.areaPrint = function() {
console.log("The Circle area is: " + circleArea.calculate());
console.log("The Square area is: " + squareArea.calculate());
}
}
function Circle(r) {
this.radius = r
this.calculate = function() {
var circleArea = (Math.PI * Math.sqrt(this.radius, 2)).toFixed(2)
return circleArea;
}
}
function Square(s) {
this.side = s
this.calculate = function() {
var squareArea = (Math.sqrt(this.side, 2)).toFixed(2)
return squareArea;
}
}
//Create Prototype(Area > Circle)
myExtend(Area, Circle)
//Prototype Member
Circle.prototype.perimeter = function(D) {
return (Math.PI * D).toFixed(2)
}
//Create Prototype(Area > Square)
myExtend(Area, Square)
var c7 = new Circle(5)
var s7 = new Square(5)
var a7 = new Area(c7, s7)
console.log()
a7.areaPrint();