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
223 +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 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир