当前位置: 首页 > 网络应用技术

为什么VUE2可以直接获取数据和方法?

时间:2023-03-06 19:44:26 网络应用技术

  Vue作为中国的热门前端框架,是自我的。它。

  当我们通常编写vue2时,我们经常用来访问数据中定义的数据,所以问题出现了吗?根据我们以前的常识,这不像JavaScript自己的此特征吗?

  如果读者了解了此功能的实现原则,建议您可以跳过文章的前半部分,而无需浪费阅读时间。只需查看下面我的查询方法的段落,以了解一些不同的想法。

  在这里,我们有一个数据消息,并且有一个用于打印消息的方法显示。问题是:如果此处是访问消息,则不应可用,因为这是对方法?和通过此方法神奇地获得的,有魔术吗?

  对于上述代码,让我们第一个调试器看看这个地方令人惊奇的是什么?

  嗯,我似乎看不到任何奇怪的东西。这不是方法,而是VM实例。这确实具有消息属性?_data中还有一个副本。从我们的浅概念中,这在_data中并不奇怪。这是什么奇怪的事情?然后掉下来,魔术是暴露的

  您找到了吗?调试工具告诉我们,该机构上的消息已被劫持,所以真正的逻辑在这里,我们单击功能点以输入函数定义的源代码部分:

  从源代码中,有经验的学生可以一眼看到线索。但是,如果暂时没有看到它,那就没关系了。在此处输入断点并找出答案!

  可以清楚地看到_data中的值在这里使用。它只是制作了一层转发,最终使用了与Vue2的响应相同的原理。因此,当我们在此数据中定义了该值时,我们可以直接得到它!它非常简单吗?

  我很容易定位,是根本原因。我怎么能在vue中成为_data?不要清楚!

  是的,这是我们现在要解释的问题。为了回答这个问题,您仍然需要从VUE实例开始。

  在中间过程中,我认为本文涉及太多。如果您注意的话,可以阅读Ruchuan的引用。我在此处直接调试此逻辑的关键部分:

  最关键的代码是,我们可以看到数据最终将一个值分配给_data。

  顺便说一句,我们可以理解一个知识点:VUE中的数据可能是一个函数。

  GetData将在此处执行此功能并返回新的数据对象。因此,您需要执行此操作?因为VUE组件可能具有多个示例。如果数据通过数据共享,它将引起内部混乱。因此,返回新数据每次。这样,每个组件都有自己的数据。根组件通常只有一个,因此当我在我面前的新vue时,数据写得不编写函数表格。但是,为了养成良好的习惯,建议编写函数表格。

  在介绍之前引入数据后,让我们看一下方法。如果您仔细地拥有数据源代码部分,则应在中间轻松找到此类代码:

  显然,方法方法的处理在initmarthods函数中。let进入...

  解释此逻辑:循环是从方法中的每个方法名称中获得的。如果是一个函数,则执行绑定函数。如果不是,它与空的noop函数绑定(您还可以知道,如果方法写入无效的参数,它也会给出一个口袋的函数)。

  在这里,很容易发现Vue做得更好。它认为,如果没有绑定,则需要自己实现。

  笔记也写在笔记中。我想总结在一个句子中实现的核心思想:bind等同于存储/申请在不合理的函数中等待执行。建立了基于此逻辑的信息。

  在这一点上,我们终于解释了标题中提到的这两个点。

  为什么方法可以使用这种逻辑方法来提供示例?但是数据必须使用object.defineproperty。可以使用逻辑吗?

  分配此方法的方法的原因是,由于函数本身是对象,因此分配了一个参考关系。实施真实复制。如果数据使用这种方式,如果将其存储在原始值中,则将导致复制。这是一个不好的错误!

  因为方法还需要处理以重新构成,所以这是不合适的。引用在线object.defineproperty文章。务必考虑性能。不要尝试不尝试。

  当我们对框架中的某些功能特别感兴趣时,每个人的第一个反应通常是在查看较长的源代码,令人生畏的和最终。

  以这种方式很容易放弃。我建议的方式是清楚地阐明如何使用此功能,并尽可能详细地分析其行为。请务必完全理解它,以便在您可以调试时可以快速掌握问题的“根”。

  我经常看到学生看到问题。在我在网上检查它之前,我考虑了1-2个小时。结果,当我看到它时,他们已经清楚地写了这篇文章并清楚地回答。推荐的方法是,遇到问题时,百度或Google并不可耻。不要使用您自己的搜索引擎。如果此方法不起作用,在大胆的小组中找到大兄弟。简而言之,面孔并不有价值,技术价值(笑?)。

  有些问题很难向他人描述,或者不知道如何搜索答案。我认为每个人都会感到孤独或无助感,这并不重要。要分解问题。,请务必弄清楚您是否一直在将其用于某个API。

  当调试器时,您可以从问题的问题上开始,然后查找。这样,我承认它确实是反官方的,但是在某些情况下,它真的很容易使用。

  当调试器无法理解时,此时就像同伴发起问题一样,我认为这会更有效。代码比阅读文本。

  我相信,如果您能理解我说的话,那么找到一个问题必须更有效。如果您有更好的方法论,欢迎您与我分享,我们将共同取得进展!

  原始:https://juejin.cn/post/7099387400207482917