应该是很久以前就听过js里的Getter和Setter了,但一直没有去研究过,Chrome控制台里打印非纯净对象时,在它的原型里就会有get和set属性。
火狐的开发者文档里有详细的关于getter和setter的用法:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/get
控制台里的试着用了一下,写一遍大概就知道是干啥用的了:
Getter
使用get关键字为属性添加一个函数,函数名即为属性名,当对象访问此属性时,将自动调用定义的函数,并返回相应的值,相当于隐式的创建了一个访问此属性的函数。Getter的函数不传参数,在一个对象里不能对一个属性定义多个getter,此外,真实的属性不能与getter共存。
Setter
同getter一样,在对象设置属性值时,自动调用由set关键字定义的函数。函数需要传入一个value,value即为设置对象属性的值。
就我个人而言的理解,结合getter与setter,可以给对象添加一个伪属性,这个属性是可以通过动态计算得来的,访问属性即调用了方法进行动态计算,免去了许多不必要的定义的各种访问函数。