学习小悟-js对象的getter和setter理解

230 阅读2分钟

  大约在一年前左右就有了这个困惑,很疑惑js对象中的getter和setter到底是什么?直到今天,在学习的过程中才终于搞明白了一些。先说结论,js对象的中的getter和setter实质上指的是js对象中的访问器属性的特性(所谓的特性也就是描述属性的属性)或者是属性描述符。如果一个js对象中存在访问器属性,那么可以通过Object.getOwnPropertyDescriptors来获取这个对象的访问器属性的属性描述符。在MDN介绍getter的文章中,有这样的一句话:尽管可以结合使用getter和setter来创建一个伪属性。事实上这个所谓的伪属性就是访问器属性。

  但我觉得收获更重要的是其实是一种学习知识的一种方法。之前在对待这个问题上,自己也曾经花费了极大的时间和精力,但是收效甚微。总结下来有几点原因:根本原因是1.概念不清晰。2.知识不成体系。直接原因是过度依赖互联网。事实上我们获取信息时,有一个隐藏的假设,认为这个信息是专业的,可信的。但实质上这些在互联网时代是很难保证的。除此之外,一种信息在以不同的角度去看,也会有不同角度的描述,这些不同的描述在各自的角度来说可能是正确的,但对于初学者来说,只能看到描述的信息不同,而未能看到隐藏的角度,也会导致理解偏差。结论是,学习时也一定要成系统的学习,系统的学习可以是通过专业可信书籍,也可以是自己对于某一项目特定的总结等。