最近在弄JS验证功能的时候 遇到了Eval的参数问题,花了些时间解决之后,稍微总结了下。 问题示例: <HTML> <BODY> <script> var test = {show:function(str){alert(str);}} var s = "ffd'd" ; eval("test.show('" +s + "')"); </script> </BODY> </HTML> 执行会报缺少')' 方法一:把方法参数作为JS类的属性 <script> var test = {show:function(){alert(this.str);},str:''}; var s = "ffd'd" ; test.str = s; 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> 方法三: 使用转义符 <script> var test = {show:function(str){alert(str + 'test');}} var s = "ffd'd" ; eval("test.show('" +s.replace(/\\/g,"\\\\").replace(/'/g,"\\\'") + "')"); </script> |