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

原文

vue文档深入响应式原理一章关于变化检测问题中的这句话什么意思,具体是js的什么限制?


米脂
浏览 1116回答 1
1回答

慕斯709654

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;  }但是当我们后面再次使用普通的赋值,仅仅是赋值了一个数据属性的,这个属性是不会具有访问器属性的事件监听功能的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript