#javascript #oop
Вопрос:
Я создаю один родительский класс и два дочерних класса.У каждого из двух дочерних классов есть метод вычисления значения площади.
Всякий раз, когда я звоню a7.areaPrint()
. Это показывает мне undefined
. Но я могу получить результат с помощью c7.calculate()
amp;amp; s7.calculate()
в консоли.
Как я могу передать эти два значения области в родительский класс и распечатать их?
c7.calculate()
amp;amp; s7.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: " 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()
Комментарии:
1. @mplungjan я использую
Circle.call(this, circleArea)
вareaPrint()
Ответ №1:
Не уверен, что понимаю ваш вопрос. Насколько я понимаю, это нужно исправить, вам нужно передать аргументы в строке var a7 = new Area()
-> > var a7 = new Area(c7, s7)
и в области вычислить код из Circle.call(this, circleArea)
вызова функции 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();
Комментарии:
1. Это работает! Спасибо.. У меня есть вопрос, является ли это динамической функцией ?