收藏
回答

小程序 ES6 写法,this 变成未定义

Page({
 
  /**
   * 页面的初始数据
   */
  data: {
    king: "tiger"
  },
 
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {
    this.testES6();
    this.test()
  },
  testES6: res => {
    console.log("testES6#", this);
  },
  test: function(res) {
    console.log("test#", this);
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function() {
 
  },
 
  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function() {
 
  },
 
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function() {
 
  },
 
  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function() {
 
  },
 
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function() {
 
  },
 
  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function() {
 
  },
 
  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function() {
 
  },
 
})

情况1



情况2



求大佬解释一下,这是为啥

最后一次编辑于  2019-08-09
回答关注问题邀请回答
收藏

5 个回答

  • 小程序商城定制开发2600元全包
    小程序商城定制开发2600元全包
    2021-06-15

    1.检查是否使用了箭头函数  在es6中使用了=>声明方法 this指向的就是定义的对象 

    2.使用了微信的api(wx.xxx({this.setData})) 那么这个this指向的是微信的 api  需要在api调用前定义一个变量来接搜this

    2021-06-15
    有用 1
    回复
  • 🎋
    🎋
    2019-08-09

    建议先去看一下箭头函数的用法和特性https://es6.ruanyifeng.com


    2019-08-09
    有用 1
    回复 1
    • MUJO
      MUJO
      2019-08-09
      感谢回复,明白了
      2019-08-09
      回复
  • 500
    500
    2019-08-09

    => 表达式  ()=>{ this//这个指的是外面的this ,而 es6转es5 启用严格模式,没有this (window) 所以是undefined }

    2019-08-09
    有用 1
    回复 1
    • MUJO
      MUJO
      2019-08-09
      感谢回复,明白了
      2019-08-09
      回复
  • 鲤子
    鲤子
    2019-08-09

    testEs6() {}即可

    2019-08-09
    有用
    回复
  • 铭锋科技
    铭锋科技
    2019-08-09

    你的res是什么问下?

    2019-08-09
    有用
    回复 1
    • MUJO
      MUJO
      2019-08-09
      res 随便定义的,这个不是ES6的语法方式么
      2019-08-09
      回复
登录 后发表内容
问题标签