javascript setter 和 getter到底是做什么的

实在搞不懂setter 和getter是干嘛的,有的地方写的又是set,get,看了很多一些资料还是不太懂他们用在什么地方

阅读 5.7k
2 个回答

如果你是指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;
}

2017年1月9日补充:
最近学习C++,发现get/set可看作对属性读/写操作的重载。

来来来,看看这个好玩的东西你就知道了:深入响应式原理

@尤小右写的vue里,数据绑定就用是你迷惑的settergetter实现的。

high的很,文档解释的也很通俗

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏