bind更改this指向问题

1.bind用法1
场景:小程序里,在test方法的请求接口then里面调用test2函数,此时test2里面的this指向为test的内容,并不指向组件内容
解决:this.test2().bind(this)()

test(){
let self=this
   api.recordCreate(data).then((res) => {
       if (res.success) {
          //处理业务
          self.test2()//错误,这样方法test2里的this,并不是指向vue组件,而且指向方法test
          self.test2().bind(self)(res.data);//正确,用bind更改指向
       }
   }).catch((err) => {
        console.log(err);
   });
},
test2(data){
console.log(this) //
}

2.bind用法2
场景: 创建了一个类,类里有一个参数需要绑定方法,页面使用时要用bind绑定,直接看代码
解决:this.websocket.onmessageFn = this.onmessageFn.bind(this)
类:(附赠websocket封装)

class MyWebScoket {
  constructor(socketUrl) {
    // super(socketUrl);
    this.onopenFn = null
    this.oncloseFn = null
    this.onmessageFn = null
    this.onerrorFn = null
    this.socketUrl = socketUrl
    this.socket = null
    this.init()
  }

  init() {
    let self = this
    self.socket = new WebSocket(self.socketUrl);
    self.socket.onopen = function (event) {
      if (self.onopenFn) {
        self.onopenFn(timeStep, event, )
      }
    }
    self.socket.onmessage = function (event) {
      setTimeout(() => {
        if (self.onmessageFn) {
          self.onmessageFn(event.data)
        }
      }, 3000)

    }
    self.socket.onerror = function (event) {
      console.log(event, 'websocket通信发生错误')
      if (self.onerrorFn) {
        self.onerrorFn(event)
      }
    }
    self.socket.onclose = function (event) {
      if (self.oncloseFn) {
        self.oncloseFn(event)
      }
    }
  }
  close() {
    this.socket.close()
  }
}

export default MyWebScoket

组件使用时:

addWebSocket(){
   let webScoketUrl=''//websocket地址
   this.websocket = new MyWebScoket(webScoketUrl);
   this.websocket.onopenFn = this.onopenFn();//错误绑定
   this.websocket.onmessageFn = this.onmessageFn.bind(this);//正确绑定
}onopenFn(){
 console.log(this)//这里的this 指向类
},
onmessageFn(data){
 console.log(this)这里的this 正常指向vue组件
 //业务处理
}

相关推荐

  1. bind更改this指向问题

    2024-03-25 02:56:03       44 阅读
  2. vue的this指向问题

    2024-03-25 02:56:03       48 阅读
  3. 箭头函数的this指向问题

    2024-03-25 02:56:03       84 阅读
  4. v-bind指令——03

    2024-03-25 02:56:03       34 阅读
  5. this指针

    2024-03-25 02:56:03       26 阅读
  6. this指向

    2024-03-25 02:56:03       46 阅读
  7. this指向解析

    2024-03-25 02:56:03       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-25 02:56:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-25 02:56:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-25 02:56:03       82 阅读
  4. Python语言-面向对象

    2024-03-25 02:56:03       91 阅读

热门阅读

  1. 三维重建-单目相机标定

    2024-03-25 02:56:03       37 阅读
  2. c语言如何颠倒字符串顺序

    2024-03-25 02:56:03       35 阅读
  3. 网络安全工程师学习路线汇总

    2024-03-25 02:56:03       43 阅读
  4. 安卓面试题多线程 131-135

    2024-03-25 02:56:03       37 阅读
  5. 关于利率,你需要知道的那些事

    2024-03-25 02:56:03       47 阅读
  6. platform devices创建实例

    2024-03-25 02:56:03       34 阅读
  7. AOP原理和切面应用

    2024-03-25 02:56:03       35 阅读
  8. P8717 [蓝桥杯 2020 省 AB2] 成绩分析 Python

    2024-03-25 02:56:03       44 阅读
  9. 【算法】数论---乘法逆元

    2024-03-25 02:56:03       46 阅读
  10. C. Lexicographically Largest - 思维

    2024-03-25 02:56:03       46 阅读