评论

微信小程序前端开发踩坑——this指针的指向

本文初步探究了一下微信小程序开发中this指针的指向

1. 问题引入

最近在写微信小程序的前端页面,其中涉及到了数据的交互。在数据更新完毕后,我想在控制台把对象打印出来查看数据状态,于是我写出了如下代码:

结果控制台直接输出undefined

对象的定义如下

这时我便来了兴致:this指针到底指向什么?如何才能获得academies对象呢?为什么在基于Vue的web前端开发时,可以直接在Vue实例的普通函数中使用this指向数据?于是我开始了探索。

2. 问题探究

2.1. 微信小程序中的this

先直接输出this

随后得到一个Vo对象,注意到里面含有一个data成员

点击打开data成员,发现它就是一个包含了我定义数据的对象,即代码中的data对象

所以要想在代码中获取academies对象,只需要写成this.data.academies即可

打印输出的结果

2.2. Vue中的this

Vue中的this指向当前组件或Vue的实例对象。实际上,在Vue中也是通过this.data或this._data的方式来访问data对象中的成员。但在Vue框架的底层对this作了特别的封装和优化,从而可以在 Vue实例对象直接管理的普通函数中,直接通过this来访问data中的数据成员。所以其本质没变,之不过底层的封装提供了更便利的方法。

3. 问题结论

在微信小程序开发中,如果要访问到data对象中的数据成员(比如member),要通过this.data.member的方式进行访问(但this.setData中key值等特殊情况不需要)。Vue的本质也是类似,之不过Vue的底层通过封装提供了更便利的方法。

4. 心得

之前搞前端都是在用Vue搞web前端,现在搞微信小程序的前端,思维有时候有些转换不过来;而且都是在搞后端之余搞的前端,基础不扎实。未来还是要打好基础,多学习,多思考,多对比,区分好各种情境下前端开发的异同点。

最后一次编辑于  2021-11-14  
点赞 3
收藏
评论

6 个评论

  • 没事
    没事
    2021-11-14

    期待深入研究,想了解什么样的情况该把this的引用给一个新的变量。

    2021-11-14
    赞同 3
    回复 1
    • 晨曦
      晨曦
      2021-11-14
      在其他用户的评论中就提到了一种情况~有机会会继续研究的~~
      2021-11-14
      1
      回复
  • 曹孟良
    曹孟良
    2021-11-14

    小程序里面还有一个用this很奇怪的地方,在异步回调后,只能用

    var that = this
    that.xxx
    

    这种形式来调用this,你知道这是为啥不

    2021-11-14
    赞同 3
    回复 12
    • 晨曦
      晨曦
      2021-11-14
      啊这,我还不知道。还请大佬解答QAQ
      2021-11-14
      回复
    • 曹孟良
      曹孟良
      2021-11-14回复晨曦
      我也不知道啊哈哈哈。我只知道要这样用😂
      2021-11-14
      回复
    • 晨曦
      晨曦
      2021-11-14
      好的哈哈哈。后面有机会研究一下~~
      2021-11-14
      回复
    • 曹孟良
      曹孟良
      2021-11-14回复晨曦
      对,这个其实,有时候会踩坑,先知道,以后再研究
      2021-11-14
      回复
    • 晨曦
      晨曦
      2021-11-14
      确实,开发过程中还是挺多坑的
      2021-11-14
      回复
    查看更多(7)
  • 知非
    知非
    2021-11-14

    之前对this的用法不太清楚,看完文章后表示学到了很多,赞~

    2021-11-14
    赞同 2
    回复
  • 粽
    2021-11-14

    先前一直对this的指向晕晕的,看了你这篇文章后明白了不少,点个赞~

    2021-11-14
    赞同 1
    回复
  • PD
    PD
    发表于移动端
    2021-11-17
    我也遇到过了this.有关的问题,还到网上去查了好久hh
    2021-11-17
    赞同
    回复 1
    • 晨曦
      晨曦
      2021-11-17
      跟前端交互逻辑相关的基本都会涉及this。我因为正在学Vue,所以大概知道怎么去排查hhh
      2021-11-17
      回复
  • Jack Li
    Jack Li
    2021-11-14

    难怪之前用微信开发工具的时候,总觉这个this怪怪的,get 到了

    2021-11-14
    赞同
    回复
登录 后发表内容