cqwcns 发表于 2021-12-27 17:47

JS函数中调用自身方法的问题

本帖最后由 cqwcns 于 2021-12-27 17:52 编辑

JS,我有个函数,函数中定义了一些方法,我希望在执行函数时,通过e的传参中的type,执行对应方法,应该怎么写?求指教,谢谢。



touch: (source, e) => {
    // Touch触摸开始
    const touchstart = (source, e) => {
      source.setData({
      touchStart: e.touches.pageX
      })
      console.log(e.type)
    };
    // Touch计算方向
    const touchmove = (source, e) => {
      source.setData({
      touchDirection: e.touches.pageX - source.data.touchStart > 0 ? 'right' : 'left'
      })
      console.log(e.type)
    };
    // Touch计算滚动
    const touchend = (source, e) => {
      const data = { touchDirection: null, activeMore: null };
      if (source.data.ListTouchDirection == 'left') data.activeMore = e.currentTarget.dataset.target;
      source.setData(data);
      console.log(e.type)
    };

    this(source, e);
    console.log(this);
    // this undefined

}

finillusion 发表于 2021-12-27 17:51

你好
用e中type传function
然后在要执行的地方使用new e.type()即可

cqwcns 发表于 2021-12-27 17:53

finillusion 发表于 2021-12-27 17:51
你好
用e中type传function
然后在要执行的地方使用new e.type()即可

e.type传过来只是字符串,例如“touchstart”、"touchmove"。

finillusion 发表于 2021-12-27 17:59

cqwcns 发表于 2021-12-27 17:53
e.type传过来只是字符串,例如“touchstart”、"touchmove"。

如果字符串是函数名的话
可以用
eval('new '+e.type+'()')
这样试试

a952135763 发表于 2021-12-27 18:06

var name = "xxxx";
var res = obj();
obj是某个类实例,name是方法名称 有参数自己在()填参数

不苦小和尚 发表于 2021-12-27 19:37

加个switch就可以了

快乐小风 发表于 2021-12-27 22:42

1. eval() 可以解析字符串为变量或方法运行, 使用不正确的话,存在安全问题
2. 自定义一个映射表, type:function(), 这样的

cqwcns 发表于 2021-12-29 09:18

采用了switch的方法,谢谢各位。
页: [1]
查看完整版本: JS函数中调用自身方法的问题