当前位置: 代码迷 >> Web前端 >> 经过函数名 调用函数 eval
  详细解决方案

经过函数名 调用函数 eval

热度:123   发布时间:2012-09-12 09:21:30.0
通过函数名 调用函数 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>

  相关解决方案