使用getter的考量是什么

使用getter的考量是什么

问题描述:

在课程的Package类中,老师使用函数方式创建了getSpecificCacheFilePath,使用getter函数方式创建了cacheFilePath。

两者的在代码实现、用途均一模一样,而且都定义在类的原型上。


我的第一个问题是:为何不将所有不传参函数,改写为getter呢?

我的第二个问题是:课程中Package类中使用getter的具体原因是什么呢?



感谢答疑解惑

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
扬_灵 2021-03-03 10:42:46

同学你好,getter本质就是对象的一个属性,只是获取属性值变成一个function,这个和Object.defineproperty用法一致,不支持传参。不改造成getter的原因是因为getter不支持async函数,具体参考:https://www.zhihu.com/question/403142281 ,而且当一个属性只有getter没有setter的时候,我们是无法进行赋值操作的,第一次初始化也不行。使用getter就是为了语义化编程,便于理解。

  • 提问者 renderman #1

    谢谢您的回复。

    我理解您这段话的意思,是这样的:

    - 不支持async写法,但仍是支持异步的。但我们仍可以return一个Promise(或者return一个async函数)达到相同目的。

    - 若函数不传参数。

    - 不对属性做赋值操作

    - 更好的语义化编程


    那我可否得出以下结论呢:

    凡能够使用getter/setter属性写法的,优先使用getter/setter写法。因为相比较普通函数,getter/setter语义化更好。

    2021-03-03 14:45:34
  • 提问者 renderman #2

    简单再问问,getter/setter vs 普通函数:

    - 语义化具体体现在哪些地方?

    - 性能孰优孰劣?



    2021-03-04 12:56:37
  • 扬_灵 回复 提问者 renderman #3

    是的,可以这样理解。

    2021-03-04 17:55:17
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师