js将字符串作为函数调用

使用场景:

开发中,选择不同的业务场景(将近10个),弹出一个公共的对话框,点击对话框的确认按钮,根据不同类型调用不同方法。if else不考虑,类型太多,代码冗余。

解决思路:

选择业务弹出对话框的时候,定义一个全局变量,存储不同业务type,业务type的值就是要调用方法的函数名。

方法1:eval(str)

eval(str) 函数可计算某个字符串,并执行其中的的 JavaScript 代码。注意,eval方法的参数只能是字符串,如果传递的不是字符串的话,会直接返回传值,而非调用。由于eval方法效率低,而且不安全,不建议使用。

function test(str){
    alert(str);
}
var a='test';
var b='345';
eval(a+'('+123+')');
eval(a+'(b)');

方法二:把方法名当成属性名

函数在js里面可以被保存在对象中,因此通过对象的属性访问,调用字符串方法。

  1. 全局函数声明会变成全局对象的属性。全局对象在进入执行上下文前创建的一个唯一的对象。在浏览器运行环境里,全局对象就是window对象
  2. 属性访问可以使用 点标记法 或者括号标记法。其中使用点访问需要标识符,二括号访问使用的是标识符对应的字符串
    function test(str){
        alert(str);
    }
    
    var param='哈哈';
    window['test'](param);//直接执行
    window['test'].call(this,'param');

    如果函数是其他对象属性,也可以同样方法调用。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五月呀

谢谢请喝奶茶~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值