#javascript #vue.js #for-loop #this #javascript-objects
Вопрос:
У меня странная проблема с JavaScript / Vue.js. Я пытаюсь перебрать свойства объекта (NewGame) и изменить их значения на «неопределенные». Они, кажется, принимают значение, когда я консолирую.log() их из цикла for, но как бы «возвращаются» к своим предыдущим значениям после цикла. Я почти уверен, что я что-то упускаю из виду. Свойства NewGame также привязаны к некоторым входным элементам с помощью v-модели. Вот фрагмент кода:
data() {
return {
newGame: {
id: undefined,
date: undefined,
location: undefined,
length: undefined,
limit: undefined,
buyIn: undefined,
cashOut: undefined
},
games: Array
};
},
methods: {
addGame() {
let newGameCopy = { ...this.newGame };
newGameCopy.id = uuidv4();
this.games = [...this.games, newGameCopy];
console.log(this.newGame);
// This one doesn't work.
for (let property in this.newGame) {
console.log(property);
property = undefined;
console.log(property);
}
console.log(this.newGame);
// This one works.
this.newGame.id = undefined;
this.newGame.date = undefined;
this.newGame.length = undefined;
this.newGame.limit = undefined;
this.newGame.buyIn = undefined;
this.newGame.cashOut = undefined;
this.newGame.location = undefined;
console.log(this.newGame);
},
}
Ответ №1:
Переназначение идентификатора само по себе не будет иметь никаких побочных эффектов (в подавляющем большинстве ситуаций) — если вы не используете идентификатор (здесь property
) позже, присвоение ему чего-либо (например undefined
) не будет иметь никакого эффекта. Вам нужно назначить undefined
newGame
объекту`, чтобы фактически изменить объект:
for (let property in this.newGame) {
this.newGame[property] = undefined;
}
Комментарии:
1. Спасибо, теперь я это понимаю, и это отлично работает! 🙂