Object.defineProperty() 双向数据绑定原理

1.基本语法
Object.defineProperty(参数1,参数2,参数3)   参数1:目标对象   参数2:要修改或者添加的属性名称   参数3:目标对象属性的一些特征 (是一个对象)              参数1:         value:属性值       参数2:         writable:对象属性值是否可以被修改 true允许 false不允许       参数3:         configurable:对象属性是否可以被删除 true允许 false不允许       参数4:         enumerable:对象属性是否可被枚举       参数5:         get():给一个属性提供getter方法,当访问这个对象的属性值得时候触发该方法       参数6:         set():给一个属性提供setter方法,当设置属性值得时候触发该方法

2.如何在执行console.log(Booke.name)时添加书名号? (
set get方法  

  var Book = {}
  var name = '';
  Object.defineProperty(Book, 'name', {
  set: function (value) {
  name = value;
  console.log('你取了一个书名叫做' + value);
  },
  get: function () {
  return '《' + name + '》'
  }
  })

  Book.name = 'vue权威指南'; // 你取了一个书名叫做vue权威指南
  console.log(Book.name); // 《vue权威指南》

 //通过Object.defineProperty( )设置了对象Book的name属性,对其get和set进行重写操作,顾名思义,get就是在读取name属性这个值触发的函数,set就是在设置name属性这个值触发的函数   
原文地址:https://www.cnblogs.com/wildccy/p/10555315.html