vue中用for in清空对象属性的问题

用vue+element作了一个简单的功能,就是一个表格就是点击添加按钮,输入一条数据,然后将输入的数据新增到表格的一栏里,结果发生问题了,直接上代码:

 handleAdd() {
      this.dialogFormVisible=false
      console.log(this.form)
      this.tableData.unshift(this.form)
      for(let key in this.form){
        this.form[key]=''
      }
    },
核心就是这个方法,其中form就是要添加的数据,用v-model跟用户输入绑定了,然后把form添加进表格数据对象数组tableData,直到这一步还是正常的,最后我用一个for in想把用户输入清空,结果发现form在被添加进tableData之前就被清空了,按道理js是顺序执行的,又不存在异步,正常情况应该是form被添加进tableData之后再被清空,实在是不明白为什么会生这种情况

阅读 4.1k
2 个回答

为什么为空,如果你打断点你可以看到在你for in 之前是有将form的数据赋值进去的。
是因为你赋值的是指向form的指针,这个指针指向内存中存有form数据的地方,当你执行for in之后form清空,相当于把内存中form的数据清空,因为在tableData中引用的form数据是指向同一个内存位置,所以也会引用空的数据。

评论那位已经说明问题啦

this.tableData.unshift(this.form);

这一步需要对 this.form 进行复制操作

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题