У меня есть задача, с определенными ограничениями. Это задача:
Создание объекта Shape для создания экземпляра нового Shape, который будет выводить на консоль текст в зависимости от количества сегментов, из которых состоит форма.
У объекта Shape есть одно свойство «type», в котором хранится это значение, и к нему можно получить доступ через функцию showType ().
По умолчанию значение типа свойства равно 3.
Форма имеет несколько методов:
Опишите ()
поведение:
- Если число типов строго меньше 3, то null или undefined Shape.describe () должен установить для них значение 3 и одновременно «console.log» сообщение:
«У фигуры должно быть как минимум 3 сегмента, для нее будет установлено значение 3», и в то же время значение свойства сегментов должно быть равно 3.
- Если число типов равно 3, Shape.describe () должно "console.log" сообщение:
«Созданная вами фигура представляет собой треугольник, состоящий из 3 сегментов», и в то же время задайте для свойства type значение 3.
- Если число типов равно 4, Shape.describe () должно "console.log" сообщение:
«Форма, которую вы создали, представляет собой четырехугольник, состоящий из 4 сегментов», и в то же время установите значение свойства сегмента равным 4.
- Если количество сегментов равно 5, Shape.describe () должно «console.log» вывести сообщение:
«Созданная вами фигура представляет собой пятиугольник, состоящий из 5 сегментов», и в то же время установите значение свойства сегмента равным 5.
- Если количество сегментов равно 3, Shape.describe () должно «console.log» сообщение:
«Созданная вами фигура представляет собой шестиугольник, состоящий из 6 сегментов», и в то же время установите значение свойства сегмента равным 6.
- Если число типов больше 6, Shape.describe () должен «console.log» вывести сообщение:
«Созданная вами форма является общей формой, составленной из {number_bigger_than_six} сегментов», и в то же время установите значение свойства сегмента в {number_bigger_than_six}.
Увеличение ()
поведение:
- Shape.increase () должен увеличивать значение типа свойства объекта и одновременно регистрировать соответствующее сообщение с помощью Shape.describe ()
пример:
const square = getShape (4) // -> устанавливает свойство типа в 4
Shape.describe () // -> console.log («Созданная вами форма представляет собой четырехугольник, состоящий из 4 сегментов»)
Shape.increase () // -> console.log («Созданная вами фигура представляет собой пятиугольник, состоящий из 5 сегментов») и одновременно свойство приращения типа квадратного объекта.
Whatis ()
поведение:
Shape.whatIs () // -> Открыть новое окно браузера, которое ссылается на https://en.wikipedia.org/wiki/Polygon
Код по умолчанию, который необходимо использовать для этой задачи:
const getShape = function (countOfTypes) {
// Create a Shape Object
const result = {
showType() {
// Return (Number) the current count of types
return Number (segments);
},
describe() {
// log 'The shape you created is a *** composed by *
segments'
},
increase() {
// Increase the type property of a created shape by 1 and
log the appropriate sentence in describe()
},
whatIs() {
// Open a new window that links to
https://en.wikipedia.org/wiki/Polygon
}
};
return result;
};
//Test and use Cases
const square = getShape(4);
square.describe(); // The shape you created is a quadrilateral
composed by 4 segments
square.increase() // The shape you created is a pentagon composed
by 5 segments
const generic = getShape(18);
generic.describe(); // The shape you created is a generic shape
composed by 18 segments
generic.whatIs(); // Open a new window that links to
https://en.wikipedia.org/wiki/Polygon
const emptyShape = getShape(); // Emit a log message: 'A shape
needs to have at least 3 segments, it will be set to 3' and set it
to 3
Это абсолютно необходимо решить с помощью существующего кода, который ограничивает нас от использования классов. Я привык решать подобные вещи с помощью классов, поэтому я попытался склониться к большему, чтобы сбить с толку тему фабричных функций.
Я пытаюсь найти рабочее решение здесь, но я не эксперт в этом вопросе, и вроде как потерян.
Я пытаюсь сделать что-то подобное.
const getShape = function (countOfTypes) {
// Create a Shape Object
return {
type: result.showType()
}
const result = {
showType() {
// Return (Number) the current count of types
return Number (countOfTypes);
},
describe(countOfTypes) {
// log 'The shape you created is a *** composed by * segments'
if (!countOfTypes || countOfTypes < 3) {
console.log ('A shape need to have at least 3 segments. It
will be set to 3.')
result.showType(3);
}
if (countOfTypes > 6){
console.log("The shape you created is a generic shape
composed by " + countOfTypes + " types")
}
if (countOfTypes == 3 || countOfTypes == 4 || countOfTypes ==
5 || countOfTypes == 6) {
console.log ('The Shape you created is ' + segmentName + '
created from ' + this.type + ' segments.')
}
let names = ['triangle', 'quadrilateral', 'pentagon', '
hexagon']
segmentName = names[countOfTypes - 3];
},
increase() {
// Increase the type property of a created shape and log the
same sentence in describe()
Number(countOfTypes) + 1;
console.log ('The Shape you created is ' + segmentName + '
created from ' + this.type + ' segments.')
},
whatIs() {
// Open a new window that links to
https://en.wikipedia.org/wiki/Polygon
window.open('https://en.wikipedia.org/wiki/Polygon');
}
};
return result;
};
//Test and use cases
const square = getShape(4);
square.describe(); // The shape you created is a quadrilateral
composed by 4 segments
square.increase() // The Shape you created is a pentagon composed
by 5 segments
const generic = getShape(18);
generic.describe(); // The Shape you created is a generic Shape
composed by 18 segments
generic.whatIs(); // Open a new window that links to
https://en.wikipedia.org/wiki/Polygon
const emptyShape = getShape(); // Emit a log message: 'A Shape needs
to have at least 3 segments, it will be set to 3' and set it to 3
Если честно, я немного застрял, и получение этого результата не является определенной ошибкой, любая помощь в решении этой проблемы будет принята с благодарностью.