javascript之函数动态调用

jacascript的使用异常灵活,但是呢,也经常会出现各种不安全的因素,函数动态调用就是其中一个例子。
     举个例子,  假设现在我有这样100个函数
    var fun1 = function () {
   };

   var fun2 = function () {
  };

  var fun3 = function () {
  };

  ....

  var fun100 = function () {
  };

我需要从第一个函数执行到最后一个,怎么办呢?难道是这样?
 
fun1();
fun2();
fun3();
...
fun100();

 很明显,绝对不是这样,会调用函数调用到死啊。那很多人会想到eval函数(
eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
 那就可以这样用:
var i;
for (i = 1; i <= 100; ++i) {
    eval("fun" + i)();
}

看起来好像不错,几行代码就调用了所有的函数,但是大家应该只eval是魔鬼,非常非常地不推荐使用eval,那么问题来了,不能用eval,那咋办呢?网上又有很多大神给出了eval的替代方法:

var strToObj = function (str) {
    return new Function("return " + str)();
};
    
var i;
for (i = 1; i <= 100; ++i) {
    strToObj("fun" + i)();
}

 这样好像不错,没用eval,又实现了动态调用,但是真的就这样吗?其实,一直都想复杂了,万能的this就可以解决这个问题了。
瞧瞧:

global = this;

var fun1 = function () {
};

var fun2 = function () {
};

var fun3 = function () {
};

....

var fun100 = function () {
};  

定义的时候加上前面那句话,使用的时候只需这样:

var i;
for (i = 1; i <= 100; ++i) {
    global["fun" + i]();
}  

这样就简单地解决了动态调用的问题。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值