请问老师关于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回答
-
这里的 getter 是之前预定于的 getter
const property = Object.getOwnPropertyDescriptor(obj, key)
// cater for pre-defined getter/setters
const getter = property && property.get
所以如果 obj[key] 之前没有定义 getter 的话,它的值就是 obj[key],如果定义了,就会执行它的 getter032021-01-08
相似问题