export const user = {
firstName: 'John',
lastName: 'Doe',
getFullName() {
return `${this.firstName} ${this.lastName}`;
},
};
const FullName = user.getFullName(user);
function setFullName(FullName) {
return `${(this.firstName = 'Bob')} ${(this.lastName = 'Marley')}`
}
console.log(FullName());
Код при вызове дает ошибку Uncaught TypeError: FullName is not a function
Когда видишь такие ошибки они означают что значение в переменной FullName не является функцией, но это значение пытаются вызвать как функцию. В твоем коде это однозначно вот этот момент FullName(). Следующие шаги - выяснить что за значение в переменной FullName и потом разбираться почему оно не такое каким ожидалось.
В твоей задаче FullName должно быть функцией?
Нет, функция SetFullName, которая принимает строку FullName
export const user = {
firstName: ‘John’,
lastName: ‘Doe’,
getFullName() {
return ${this.firstName} ${this.lastName};
},
};
const FullName = user.getFullName(user);
function setFullName(FullName) {
return `${(this.firstName = 'Bob')} ${(this.lastName = 'Marley')}`
}
console.log(SetFullName());
Не могу верно написать функция SetFullName чтобы изменить имя пользователя
Я порассуждаю вслух а ты поправляй/уточняй.
Нужна функция SetFullName которая изменит имя пользователя. Значит на вход функции должно поступать новое имя а так же объект пользователя в котором будет меняться имя
function SetFullName(FullName, user) {
}
FullName содержит имя и фамилию, а менять нужно только имя. Значит нужно извлечь имя и фамилию из FullName. Наверное это .split строки по пробелу (не самый лучшая логика для продакшена ибо не со всеми именами-фамилиями будет корректным разбивать по пробелу. Например есть полные имен типа Ludwig van Beethoven, но возможно этот аспект не должен учитываться в твоей задаче).
Установить новое имя. Имя хранится в свойстве объекта, значит изменение имени означает переписывание свойства объекта. Типа user.firstName = "XXX".
export const user = {
firstName: 'John',
lastName: 'Doe',
getFullName() {
return `${this.firstName} ${this.lastName}`;
},
setFullName(fullName) {
const [firstName, lastName] = fullName.split(' ');
this.firstName = firstName;
this.lastName = lastName;
},
};
Как тогда вписать чтобы увидеть в консоле?
console.log(user.getFullName()) - в консоле John Doe
console.log(user.setFullName.call(user, 'Olia', 'Lys'))
Вопрос не понятен. Буду догадываться чего ты имеешь в виду.
console.log(user.getFullName())
user.setFullName('Jack Appleseed')
console.log(user.getFullName())
Да, спасибо, поняла
