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" }));
Вы используете параметр 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".
Надеюсь, это поможет вам понять, как исправить код.
В вашем коде есть несколько проблем:
Вы используете параметр 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".
Надеюсь, это поможет вам понять, как исправить код.