JavaScript; Что не так с моей функцией-модулем (object)? Подскажите, пожалуйста, что тут не так?
Как написать подобное правильно? Простите, пожалуйста, за такой глупый вопрос, но нигде не нашел подобного примера (с аргументом функции в виде объекта).var human = (function (person) {
person = {
firstName : "John",
lastName : "Doe",
age : person.age || 50,
eyeColor : person.eyeColor || "blue",
};
return person.age + ", " + person.eyeColor;
});
var getPerson = new human({ eyeColor: "Yellow" });
//
console.log(getPerson({ eyeColor: "Green" }));

21 Авг 2019 в 07:03
203 +1
0
Ответы
1

В вашем коде есть несколько проблем:

Вы используете параметр person в функции, но затем переопределяете его внутри функции. Это не имеет смысла в данном контексте.

Ваш модуль не экспортирует никаких методов или свойств, поэтому вы не можете вызывать его как функцию при создании объекта getPerson.

Вы пытаетесь передать объект { eyeColor: "Green" } вместо функции getPerson, что вызовет ошибку.

Вот исправленный пример:

var human = function (person) {
var defaultPerson = {
firstName : "John",
lastName : "Doe",
age : 50,
eyeColor : "blue",
};
person = Object.assign(defaultPerson, person);
return person.age + ", " + person.eyeColor;
};
var getPerson = human({ eyeColor: "Yellow" });
console.log(getPerson); // 50, Yellow

В этом примере функция human принимает объект person в качестве аргумента, затем объединяет его с объектом defaultPerson, используя метод Object.assign. Далее функция возвращает строку из значения age и eyeColor из объекта person.

При вызове функции human с объектом { eyeColor: "Yellow" }, значение getPerson будет "50, Yellow".

Надеюсь, это поможет вам понять, как исправить код.

20 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 588 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир