为了账号安全,请及时绑定邮箱和手机立即绑定

受现代 Javascript 的限制,Vue 不能检测到对象属性的添加或删除。

受现代 Javascript 的限制,Vue 不能检测到对象属性的添加或删除。

米脂 2018-10-12 14:10:24
原文vue文档深入响应式原理一章关于变化检测问题中的这句话什么意思,具体是js的什么限制?
查看完整描述

1 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

ECMAScript中有两种属性:数据属性和访问器属性;
数据属性的描述符为:Configurable,Enumerable,Writable,Value;
访问器属性的描述符为:Configurable, Enumerable,set,get。

当我们使用new Vue(obj),其内部发生了大体如下代码的转换,即将数据属性,转换为了访问器属性

function Vue(obj){
    obj.data.keys().forEach((prop, index) => {      Object.defineProperty(obj.data, prop, {
        set(){          //可以在此处进行事件监听
        },
        get(){
    
        }
      })
    })    return obj;
 }

但是当我们后面再次使用普通的赋值,仅仅是赋值了一个数据属性的,这个属性是不会具有访问器属性的事件监听功能的。


查看完整回答
反对 回复 2018-11-16
  • 1 回答
  • 0 关注
  • 1115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信