用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之后再被清空,实在是不明白为什么会生这种情况
为什么为空,如果你打断点你可以看到在你for in 之前是有将form的数据赋值进去的。
是因为你赋值的是指向form的指针,这个指针指向内存中存有form数据的地方,当你执行for in之后form清空,相当于把内存中form的数据清空,因为在tableData中引用的form数据是指向同一个内存位置,所以也会引用空的数据。