实在搞不懂setter 和getter是干嘛的,有的地方写的又是set,get,看了很多一些资料还是不太懂他们用在什么地方
来来来,看看这个好玩的东西你就知道了:深入响应式原理
@尤小右写的vue
里,数据绑定就用是你迷惑的setter
、getter
实现的。
high的很,文档解释的也很通俗
如果你是指ES5开始出现的对象字面量中的set、get方法的话,那么是这样的:
在ES5以前,读/写对象的属性时,产生的结果就是返回了对象属性的值/设置了对象属性的值。
在ES5之后,对于用get/set方法定义的属性来说,对它进行读/写属性时,其结果却是可以由开发者来自定义的。即给了开发者自己去定义“读/写对象的属性”这个两种操作的具体行为的权利,使得灵活性大大提高。
至于可以做什么,举两个例子:
比如可以在某个属性被设置时打印日志:
set: function(pw) {
this.pw = pw;
console. log('密码被修改了');
}
比如可以在某个属性被设置时更新其他属性:
//假设b是一个依赖a的属性,这样一来b就可以自动更新了
set: function(a) {
this.a = a;
this.b = a * 100;
}