JavaScript/Vue.js中使用for-in循环无法修改对象属性值如何解决
问题原因
你的for-in循环存在基础语法错误:
for...in迭代对象时,property变量拿到的是属性名字符串,不是属性本身的引用- 你写的
property = undefined只是把这个临时字符串变量赋值为undefined,完全没有操作到this.newGame对象上的对应属性
所以循环执行完原对象没有任何变化,你后面手动给每个属性赋值的写法是直接操作对象属性,所以能正常生效。
正确实现方式
修改for-in循环即可,不需要逐个手动写属性赋值:
// 修复后的for-in写法 for (let property in this.newGame) { // 通过对象[属性名]的语法给对应属性赋值 this.newGame[property] = undefined }
如果要避免for-in可能遍历到原型链属性的问题,还可以用更稳妥的写法:
Object.keys(this.newGame).forEach(key => { this.newGame[key] = undefined })
内容的提问来源于stack exchange,提问作者za1234ki
相关产品推荐
相关产品推荐

