Vue值传递取消数据绑定

有一个app,如下:

var app = new Vue({
    el:'#app',
    data:{
        name:'zhangsan'
    }
});

var d = app.data;
d.name = 'lisi' //如何让这儿更改不影响app.data中的数据?
阅读 7.2k
3 个回答

深考贝,
JSON.parse(JSON.stringify(app.data));

Vue数据响应式的原理是 Object.defineProperty 用get和set劫持其他人对 对象属性的访问
然后vue自己写的set里面,实现了(ˇˍˇ) 想向所有需要这个属性的对象,发送这个属性最新的值
只要修改了 属性的值 就会调用 set 方法,然后其他对象就知道数据改变,然后重新渲染

相关代码

var a = {
    n: 12,
    m: 'asd'
}
Object.defineProperty(a, 'm', {
    get: function(){
        console.log('触发了 getter');
        return 'asd';
    },
    set: function(value){
        console.log('触发了 setter');
        m = value;
    }
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题