双向数据绑定:
vue2 使用 Object.defineProperty(obj, prop, descriptor)
做数据劫持,进行监听,进行双向数据绑定。
vue3 使用 Proxy
Proxy(obj, prop, value)
Proxy 对象用于创建一个对象的代理,从而实现基本操作的拦截和自定义(如属性查找、赋值、枚举、函数调用等)。mdn 文档
ie9以上支持。所以vue 不支持ie8以下的ie浏览器。Object.defineProperty
描述符默认值汇总
拥有布尔值的键 configurable
、enumerable
和 writable
的默认值都是 false
。
属性值和函数的键 value
、get
和 set
字段的默认值为 undefined
。
1 | var o = {}; // 创建一个新对象 |
下面通过2个例子进行比较,期望: input 输入框的值同步在span中。
html
1 | <input type="text" id="in"> |
Object.defineProperty
1 | var inputName = document.getElementById('in'); |
proxy
1 | var inputName = document.getElementById('in'); |