`

通过函数名 调用函数 eval

    博客分类:
  • js
 
阅读更多

最近在弄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>

分享到:
评论

相关推荐

    python通过函数名调用函数的几种场景

    在Python中,通过函数名调用函数是实现动态行为的有效方式。`eval`提供了最大的灵活性,但也伴随着潜在的风险。而`getattr`则更安全,适合在类的上下文中使用。选择哪种方法取决于具体的需求和安全考虑。在编写代码...

    javascript实现根据函数名称字符串动态执行函数的方法示例

    利用这些特性,我们能够通过函数名的字符串形式来动态调用函数。 接下来,我们来看看实现动态函数调用的几种方式: 1. 使用eval()函数: eval()函数可以执行字符串中的JavaScript代码,如果我们知道要调用的函数名...

    python实验报告-函数定义和调用.doc

    在Python中,我们使用`def`关键字来定义一个函数,后跟函数名和圆括号,圆括号内可以包含函数参数。例如,`drawDigit(d)`函数接受一个参数`d`,用于绘制七段数码管。函数体内的代码则执行相应的操作。 在实验的第一...

    javascript中eval函数用法分析.docx

    - 在严格模式下,`eval`被视为保留字,不能被重命名,并且变量名、函数名、函数参数等不能命名为`eval`。 #### 五、eval函数的替代方案 由于`eval()`函数的安全性和性能问题,推荐使用其他方法来代替它,如使用`...

    2020年EVAL 函数EXECUTEGLOBAL 语句使用说明.pdf

    在VBScript中,`Eval`函数和`Execute`、`ExecuteGlobal`语句是三个重要的动态执行代码的工具,它们各自有不同的用途和特性。 `Eval`函数的主要功能是计算一个字符串表达式,并返回表达式的值。它适用于需要动态计算...

    javascript中eval函数用法分析

    在严格模式下使用eval时,eval被限制在私有的上下文环境内,不能通过别名来覆盖eval函数,也不能将eval设置为变量名、函数名、函数参数或者异常捕获的参数。 6. 评估的代码安全性 eval函数会将传入的字符串当作...

    php动态函数调用方法

    - 性能方面,直接调用函数比通过变量调用更快,因为不需要额外的解析步骤。 - 为避免安全问题,确保传递给动态调用的函数名是可信的,并且避免使用未经验证的用户输入。 了解这些知识点后,开发者可以更好地利用...

    测试eval方法所以造成无法通过google closure compiler编译

    2. 使用`window.eval()`:在某些情况下,如果必须使用`eval()`,可以将它限制在全局作用域,通过`window.eval()`调用,这样Closure Compiler可以识别这是一个全局操作。 3. 使用`@nocache`注释:在`eval()`前添加`/...

    前端项目-expr-eval.zip

    3. 评估表达式:调用expr-eval提供的函数,传入表达式字符串,得到计算结果。 例如,对于表达式 "2 + 2 * 3",我们可以这样做: ```javascript const exprEval = require('expr-eval'); const expression = "2 + 2 ...

    matlab匿名函数M文件函数嵌套函数子函数私有函数重载函数.pdf

    重载函数是指在MATLAB中,为同一个函数名定义多个版本,每个版本处理不同类型的输入参数。这在多态性中非常有用,但MATLAB不直接支持函数重载,通常通过改变函数签名(参数数量或类型)来达到类似效果。 在给定的...

    JS函数集合大全/JS函数

    这里`name`应替换为实际的属性名,如`innerHTML`、`value`等。 ### 6. 字符串转换 `document.getElementById("output").value = document.getElementById("input").value.toUpperCase();`这段代码展示了如何将输入...

    javascript针对不确定函数的执行方法.docx

    当面对不确定的函数时,可以通过构造包含函数名的字符串,然后传递给`eval()`来尝试执行它。 ##### 示例代码: ```javascript function input1_onChange() { alert('input1_onChage executed.'); } var objId = ...

    Python电子教案5_函数和代码复用.pptx

    函数是一段具有特定功能的、可重用的语句组,用函数名来表示并通过函数名完成功能调用。函数也可以看作一段具有名字的子程序,可以在需要的地方调用执行,不需要在每个执行地方重复编写这些语句。每次使用函数可以...

    Autolisp函数全集_pyautocad模块_python_

    5. **`vl-cmdf`**:用于调用AutoCAD内部命令的函数,比如 `(vl-cmdf "COPY" "block1" "block2")` 复制名为block1的对象到block2。 6. **`vl-load-com`**:加载AutoLISP的动态链接库(.dll),以访问更多功能和对象...

    Python中函数eval和ast.literal_eval的区别详解

    ### Python中函数eval和ast.literal_eval的区别详解 #### 前言 在Python编程中,经常需要处理字符串与各种数据类型(如列表、元组、字典)之间的转换。为了实现这种转换,Python提供了`eval()`函数。然而,`eval()...

    python 动态调用函数实例解析

    在Python编程中,动态调用函数是一种灵活的特性,允许程序在运行时决定要执行哪个函数。这通常用于处理不确定的函数名、参数或需要根据条件执行不同操作的情况。以下是对动态调用函数实例的详细解析: 1. **根据...

    Eval 函数 | Execute 语句 | ExecuteGlobal 语句使用说明|angluo-asp-32985.pdf

    在编程领域,Eval函数、Execute语句和ExecuteGlobal语句是用于在程序运行时动态执行代码的技术。这三种技术各有特点和使用场景,但同时也带来潜在的风险。本文将详细介绍这三种技术的使用方法、特点和注意事项。 ...

Global site tag (gtag.js) - Google Analytics