Проблема с GET И SET в JavaScript при увеличении регистра букв
Всем привет, что надо переделать в коде что увеличивались буквы все, и выводились все, вот мой код
let zo = {
s: "zen",
x: "fuz",
get full() {
return `${this.s} ${this.x}`;
},
set full(v) {
[this.s, this.x] = v.toUpperCase();
}
};
zo.full = "red fiz";
console.log(zo.full);
Ответы (2 шт):
Автор решения: NoSkill
→ Ссылка
let zo = {
s: "zen",
x: "fuz",
get full() {
return `${this.s} ${this.x}`;
},
set full(v) {
[this.s, this.x] = v.toUpperCase().split(' ');
}
};
zo.full = "red fiz";
console.log(zo.full);
Автор решения: Grundy
→ Ссылка
Значением параметра v в данном случае является присваиваемая строка "red fiz".
В сеттере идет попытка разобрать эту строку как массив и сохранить первые два элемента массива в соответствующие свойства.
По сути запись
[this.s, this.x] = v.toUpperCase();
эквивалентна
var upper = v.toUpperCase();
this.s = upper[0];
this.x = upper[1];
Таким образом видно, что в случае со строкой просто возьмутся первые две буквы.
Для решения достаточно преобразовать передаваемую строку в массив, например с помощью метода split
let zo = {
s: "zen",
x: "fuz",
get full() {
return `${this.s} ${this.x}`;
},
set full(v) {
[this.s, this.x] = v.toUpperCase().split(' ');
}
};
zo.full = "red fiz";
console.log(zo.full);