1. Vue2.x
响应式原理
关于Vue2.x
的响应式原理在官方文档中也有介绍。
https://cn.vuejs.org/v2/guide/reactivity.html
在该文档中,我们注意如下一段内容:
当你把一个普通的 JavaScript 对象传入 Vue 实例作为 data 选项,Vue 将遍历此对象所有的 property,并使用 Object.defineProperty 把这些 property 全部转为 getter/setter。Object.defineProperty 是 ES5 中一个无法 shim 的特性,这也就是 Vue 不支持 IE8 以及更低版本浏览器的原因。
通过以上的文字,我们可以看到,在Vue2.x
中响应式的实现是通过Object.defineProperty
来完成的,注意该属性无法降级(shim)处理,所以Vue
不支持IE8
以及更低版本的浏览器的原因。
下面我们来看一下Object.defineProperty
基本使用
修改data
对象中的msg
属性的值,实现视图的更新.(这也就是我们所说的响应式)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<me