吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 859|回复: 7
收起左侧

[求助] JS函数中调用自身方法的问题

[复制链接]
cqwcns 发表于 2021-12-27 17:47
本帖最后由 cqwcns 于 2021-12-27 17:52 编辑

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



[JavaScript] 纯文本查看 复制代码
touch: (source, e) => {
    // Touch触摸开始
    const touchstart = (source, e) => {
      source.setData({
        touchStart: e.touches[0].pageX
      })
      console.log(e.type)
    };
    // Touch计算方向
    const touchmove = (source, e) => {
      source.setData({
        touchDirection: e.touches[0].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[e.type](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
[JavaScript] 纯文本查看 复制代码
var name = "xxxx";
var res = obj[name]();

obj是某个类实例,name是方法名称 有参数自己在()填参数

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
cqwcns + 1 + 1 用心讨论,共获提升!

查看全部评分

不苦小和尚 发表于 2021-12-27 19:37
加个switch就可以了

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
cqwcns + 1 + 1 用心讨论,共获提升!

查看全部评分

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

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
cqwcns + 1 + 1 用心讨论,共获提升!

查看全部评分

 楼主| cqwcns 发表于 2021-12-29 09:18
采用了switch的方法,谢谢各位。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 17:36

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表