通过函数名 调用函数 eval

最近在弄JS验证功能的时候 遇到了Eval的参数问题,花了些时间解决之后,稍微总结了下。

问题示例:

<HTML> 

<BODY> 

 <script>

 var test =

 {show:function(str){alert(str);}}

 var s = "ffd'd" ;

 eval("test.show('" +s + "')");

 </script>  

</BODY>

</HTML>

  执行会报缺少')'

 

 

方法一: 使用转义符

<script>

 var test =

 {show:function(str){alert(str + 'test');}}

 var s = "ffd'd" ;

 eval("test.show('" +s.replace(/\\/g,"\\\\").replace(/'/g,"\\\'") + "')");

 </script>

 

 

方法二:把方法参数作为JS类的属性

 <script>

 var test = {show:function(){alert(this.str);},str:''};

 var s = "ffd'd" ;

 test.str = s;

 eval("test.show()");

 </script> 

 

方法三: 使用call

 <script>

 var test = {show:function(str){alert(str);}};

 var s = "ffd'd" ;

var func = eval("test.show");

func.call(func,s);

 </script>  

 

方法四:最简单的方法,使用function对象

 <script>

 var test = {show:function(str){alert(str);}};

 var s = "ffd'd" ;

var func = eval("test.show");

func(s);

 </script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值