真就是读源码?

来源:4-5 依赖收集(上)

学习为致及

2021-01-19

视频00:36
代码是:var value = getter ? getter.call(obj) : val;
您说的“然后呢它首先拿到getter,然后尝试计算,然后没有getter就直接取这个值”

不是?我真是很努力的在看视频,不想白花钱。我就想问问您。您这个是源码解析还是读源码。真就照着读一遍就完事了?
什么叫尝试计算?getter.call(obj)和“尝试计算”什么关系?

我自己打断点看到getter就是undefined。我也不知道为什么,我也不知道getter.call(obj)什么情况下触发。我只能自己跟着源码读一遍不断的尝试什么情况下会有getter,什么情况下触发getter.call(obj)。如果您之后的视频里面会讲为什么不提一句“之后会讲”。而是直接一笔带过了。getter是什么情况下产生什么情况下会调用。当初作者为什么想这么做。这不才是源码分析吗?就跟着源码的执行过程读一遍就源码分析了?我真是气死气死气死气死。

关键确实我自己比较菜,我知道的东西也不多。可能知识储备不够,还不懂您说的什么意思。但是我就更想问一句。如果您随口提的一句话我就懂了,那我为什么要跟着视频看源码,而不是自己去看源码。

写回答

1回答

ustbhuangyi

2021-01-20

为啥有些源码我会在视频里说这个之后讲,是因为看源码也是有技巧的,就是主线优先,你可以把代码的执行过程想象成一个颗树的遍历,会有很多的分支,如果一下把所有分支都讲到,是不现实的,也是浪费时间的。


这篇文章推荐你看看,也是我写的:https://juejin.cn/post/6844903617762492423


你提到的占位 vnode,渲染 vnode,这个说法确实不好,当然 Vue2 源码本身命名就不好,我在 《Vue.js 3.0 核心源码解析》课程中对这个说法做了个优化,截图给你参考一下:

//img.mukewang.com/szimg/60079be909e1411716221258.jpg

通过例子可能更好理解。

另外,这个课程学习过程中,你会发现很多你不懂的知识点,这其实是好事,说明你可以学习到新东西,而老师在这里就可以起到一个辅助的作用,比如你自学学不会的就可以来提问。想象一下,如果你学一门课很轻松,看上去老师和学生都 happy,但其实你可能啥也没学到,因为你早就会了。对于你没见过的知识点,比如 Object.getOwnPropertyDescriptor,你可以去 mdn 上查一下自己学一下。很多知识点我没讲,有可能是我漏讲了,也可能我认为它并没有那么重要,因为这个课程已经有 25 个小时了,如果什么都面面俱到的讲,时长会非常长,还望理解。

最后,这个课程的问答区我建议你也逛一逛,因为有些问题问的也很不错,我也做了详细的回答,也算是对课程的补充,这些东西都是你买这门课的附加价值,要充分利用喔。




1
0

ustbhuangyi

2021-01-19

首先,给你学习造成的困惑表示歉意。

其次,我来针对你的疑问解答

//img.mukewang.com/szimg/6006a9c00905034b22001380.jpg
你的疑问是这个 getter 为啥调试的是 undefined,首先我们要知道这个 getter 是什么,这个 getter 是 property.get ,那这个 property 是 Object.getOwnPropertyDescriptor(obj, key) 的返回值,其实这个 getter 就是 obj.key 这个对象原有的 getter 函数,比如之前就通过 Object.defineProperty 给 obj.key 定义了 getter 函数了。

所以后面红框的逻辑就是如果之前已经定义过 getter 函数了,那么就调用原有 getter 函数,拿到返回值,否则就直接取 val,也就是 obj[key] 的值。

再次,我想说这门课的设计就是为有基础的同学进阶的,如果你基础还比较薄弱,建议先打牢基础,另外学习过程中遇到任何的问题,都可以来问答区提问,所有问题我都会解答,这也是你购买这门课的价值之一。录视频都是脱稿录的,所以难免有表达不够的情况,如果你觉得我视频里哪些地方讲的难以理解或者有问题,也欢迎你在问答区指出来,我们一起来帮助完善。

你的抱怨我可以理解,但是光抱怨是解决不了问题的,我想你既然花钱买了这门课,就应该充分利用这门课的学习资源,遇到问题多提问,然后自己多总结。

这门课当然不可能只是照读源码,你刚学有困惑也是很正常的,毕竟这门课的难度在这,源码本身也很抽象,希望你能有耐心,恒心,一遍看不懂就多看几遍,多打断点多调试,等到你学通的那天,你会发现这些努力都是值得的,加油吧:)

0
2
旋涡鸣人_
回复
学习为致及
本来就复杂。。。 有困惑也是正常的 ? 我已经刷过一遍了 ,但是 这不还回来看
2021-01-24
共2条回复

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

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

4984 学习 · 1037 问题

查看课程