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

来源:4-2 响应式对象(上)

hy_wang

2021-01-06

老师这里我不是很明白

  // 只有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回答

ustbhuangyi

2021-01-07

这里的 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
3
hy_wang
非常感谢!
2021-01-08
共3条回复

Vue.js 源码深入解析 深入理解Vue实现原理

全方位讲解 Vue.js 源码,进阶高级工程师

4984 学习 · 1037 问题

查看课程