Не могу понять, почему появляется сообщение «Uncaught RangeError: Превышен максимальный размер стека вызовов». Я пытаюсь решить:
Проблема:
Создайте объект Polygon для создания экземпляра нового Polygon, который будет выводить на консоль текст, основанный на количестве сегментов, из которых составлен . Полигон имеет одно свойство segments
, в котором хранится это значение , и к нему можно получить доступ через функцию getSegments()
.
По умолчанию имеет 3 сегмента.
Если сегменты строго меньше 3, то Polygon установит их на 3 и выдаст сообщение об ошибке, говорящее: «Полигон должен иметь 3 сегмента, это
будет установлено на 3 ".
Случаи:
1. Если сегменты не определены, имя многоугольника - треугольник
2. Если сегменты <3, имя многоугольника устанавливается на треугольник </em>
3. Если сегментов 3, имя многоугольника устанавливается в треугольник
4. Если сегменты равны 4, имя многоугольника устанавливается на четырехугольник
5. Если сегменты 5, имя многоугольника устанавливается на пятиугольник
6. Если сегментов 6, имя многоугольника устанавливается в шестиугольник
Что я пытался сделать?
Я попытался создать класс Polygon, а затем функцию getSegments (сегменты), чтобы изменить свойство сегментов нового объекта в зависимости от пропуска сегментов, который будет передаваться по условию, и в ситуации, когда я вызываю сценарий извне из индекса. HTML-страница, это работает. Но когда я пытаюсь вставить код в консоль браузера, и в среде Node.js я получаю сообщение об ошибке «Uncaught RangeError: Превышен максимальный размер стека вызовов». Я не сталкивался с подобной ошибкой раньше, поэтому, если бы кто-нибудь мог увидеть, что я там сделал неправильно, или знать, как объяснить мне, как этого избежать в будущем, я был бы очень признателен.
class Polygon {
constructor () {
this.segments = getSegments();
}
}
function getSegments(segments) {
this.segments = segments;
if (segments < 3) {
polygon = new Polygon(segments)
console.log ('A polygon need to have at least 3
segments. It will be set to 3.')
polygon.segments = 3
} else if (segments === 3) {
polygon = new Polygon(segments)
console.log ('The polygon name is triangle')
} else if (segments === 4) {
polygon = new Polygon(segments)
console.log ('The polygon name is quadrilateral')
} else if (segments === 5) {
polygon = new Polygon(segments)
console.log ('The polygon name is pentagon')
} else if (segments === 6) {
polygon = new Polygon(segments)
console.log ('The polygon name is hexagon')
} else if (typeof segments == 'undefined') {
polygon = new Polygon(3)
console.log ('The polygon name is triangle')
}
}
Результаты:
Я ожидал, что получится вывод:
getSegments(4)
// -> объект многоугольника со свойством сегментов, его значением 4 и текстом console.log Имя многоугольника является четырехугольным.
Фактический вывод: Uncaught RangeError: Превышен максимальный размер стека вызовов.
Заранее благодарю за все ваши советы и помощь.
Решение
На самом деле проблема была в этом блоке кода:
`class Polygon {
constructor () {
this.segments = getSegments();
}
}`
строка кода, которую нужно заменить:
`this.segments = segments`and with constructor we need to pass segments like this `constructor (segments)`, and the error is resolved.