在vue的项目开发中,我们知道,在一个组件中,this指向的是当前的组件对象,但是当我们在处理一个大型的项目,而且要调用一些公共的方法或函数,且在函数中又要继续调用下一个函数,例如:
组件A中:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18mounted () {
  this.funcA
},
methods: {
  funcA () {
    this.funcB(b)
  },
  funcB (B) {
    // 一些公共的函数,如支付或js bridge等
    this.funcC(c)
  },
  funcC (C) {
    // 一些公共的函数,如支付或js bridge等
    this.funcD(d)
  },
  funcD (D) {
  }
}
在上面的示例中,我们在调用组件A的方法funcA()之后需要连续调用两个外部支持的函数,且之前有参数传递,最后又要调用组件A的方法funcD(),当funcB()和funcC()方法在组件B
中也需要调用时,我们如果在组件B中再重复写一套就很麻烦了,所有有些时候,我们需要将一定的方法剥离出去。
可以这样做:
组件A中:1
2
3
4
5
6
7
8
9
10
11
12import {funcB, funcC} from '../tools/bridge.js'
mounted () {
  this.funcA
},
methods: {
  funcA () {
    funcB.call(this, b) // 此处将this对象通过call方法传递给外部函数funcB
  },
  funcD (D) {
  }
}
公共方法bridge.js中:1
2
3
4
5
6
7
8
9
10
11
12funcB (B) {
  let self = this
  // 一些公共的函数,如支付或js bridge等
  funcC.call(self, c)
}
funcC (C) {
  // 一些公共的函数,如支付或js bridge等
  self.funcD(d) // 此处通过self指向组件中的funcD
}
export { funcB, funcC }