vue能做到双向绑定数据靠的就是 Object.defineProperty() ,俗称属性拦截器。
//例如 平时我们定义一个参数 是这样的
var Book = {
name: '一般的参数'
};
console.log(Book.name); // 一般的参数
//但是你想在输出的同时对参数进行一些操作
var Book = {}
var name = '';
Object.defineProperty(Book, 'name', {
set: function (value) {
name = value;
console.log('双向处理SET' + value);
},
get: function () {
return '双向处理GET' + name
}
})
Book.name = '绑定的数据'; // 双向处理SET 绑定的数据
console.log(Book.name); // 在其它地方修改参数 输出时就会是:双向处理GET 绑定的数据