规避丑陋的eval

然而,eval会带来一些意想不到的问题:

  1. 安全性问题:你的字符串可能会被注入其他的命令或者第三方脚本。
  2. 可调试问题:很难去调试错误信息。
  3. 压缩问题:程序不会对字符串进行最小化压缩。

不幸的是,在实际的开发中,eval经常会被滥用,例如解析 JSON 字符串,虽然使用eval可以正常工作,但是我们应该尽量避免使用它,例如使用JSON.parse方法。

那么,我们如何才能不用 eval 的方式通过字符串调用 JavaScript 的方法呢?

我们可以使用windows对象来实现

    function aa(){
        alert("1")
    }

    window["aa"]  // output function aa(){alert("1")}

    window["aa"]() //1

那么我们可以利用这个特性来封装一个方法

            function aa(string,abc){
                alert(string+abc)
            }


            function happyEeval(object,functionName,argumentsArray){
                  return window[functionName].apply(null,arguments)
            }

            happyEeval(null,"aa",["hello",123]);

不解释 完成了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值