请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

请问老师关于getter和setter的判断

老师这里我不是很明白

  // 只有setter没有getter 并且传入了obj和key
  if ((!getter || setter) && arguments.length === 2) {
    val = obj[key]
  }

如果存在getter那么我可以明白val=obj[key]是获取getter的值进行保存到val中。

但是如果setter存在 getter不存在,那么val=obj[key]这个时候是什么意思?老师我不是很清楚。
因为getter不存在,obj[key]不应该也是undefiined吗,val也就是undedined。为什么要做这个判断呢?

正在回答

1回答

这里的 getter 是之前预定于的 getter

const property = Object.getOwnPropertyDescriptor(obj, key)
// cater for pre-defined getter/setters
const getter = property && property.get

所以如果 obj[key] 之前没有定义 getter 的话,它的值就是 obj[key],如果定义了,就会执行它的 getter

0 回复 有任何疑惑可以回复我~
  • 提问者 hy_wang #1
    老师我不太清楚。。可能问题比较蠢。。我理解是obj [key]既然没有定义get取到的不应该是undefined 吗
    回复 有任何疑惑可以回复我~ 2021-01-08 09:19:26
  • ustbhuangyi 回复 提问者 hy_wang #2
    当然不是,比如你定义 const obj = {a: 1} 这种普通对象就没有 getter 去, obj['a'] 不就是 1 吗
    回复 有任何疑惑可以回复我~ 2021-01-08 13:52:55
  • 提问者 hy_wang #3
    非常感谢!
    回复 有任何疑惑可以回复我~ 2021-01-08 14:44:11
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信