老师,关于defineReactive的一点疑问

来源:4-3 响应式对象(下)

K丶L

2018-10-27

if ((!getter || setter) && arguments.length === 2) {
    val = obj[key]
  }

!getter可以理解不进行深度观测可以理解,但是为什么当无getter但是有setter的时候要进行深度观测?

写回答

2回答

qq_飞越疯人院_1

2019-05-28

因为arguments.lenght ===2,所以并没有传入val属性,只是取值而已。在initProps方法的for...in里面是有传入第三个参数的,也就是value,所以就不用取值,不执行这个if。

0
0

ustbhuangyi

2018-10-28

这个只是对初始值 val 做了一次求值,并非要不要深度观测。

0
2
BT7274
同样有这个疑惑。 1. 不理解!getter代表什么 2. 不理解setter为truely时代表什么。 getter是为了给下面Object.defineProperty的get描述符方法用的,但是有没有getter跟setter都不影响val = obj[key]的求值操作吧?既然都不影响求值为什么要进行判断才求值呢?
2021-04-27
共2条回复

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

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

4984 学习 · 1037 问题

查看课程