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())
Да, спасибо, поняла