<template>
<div>
<span>{{obj.name}}</span>
<span>{{obj.innerObj.name}}</span>
<el-button @click="handleAdd">添加</el-button>
<el-button @click="handleModify">修改</el-button>
</div>
</template>
<script>
const obj = {
name: '张三',
innerObj: {
name: '李四'
}
}
export default {
name: "SupplierInfo",
data(){
return{
obj: {}
}
},
created() {
this.handleAdd()
},
methods:{
handleAdd(){
//this.obj = Object.assign({},obj)
this.obj = JSON.parse(JSON.stringify(obj))
},
handleModify(){
obj.name = '张四'
obj.innerObj.name = '王五'
}
}
}
</script>
<style scoped>
</style>
this.obj = Object.assign({},obj)
新对象obj外层属性不被监听,里面对象还是被监听,当点击修改时显示张三王五
this.obj = JSON.parse(JSON.stringify(obj))
新对象obj里的所有对象属性都不会被监听,当点击修改时显示张三李四