js-动态调⽤⽅法
JavaScript eval() 函数
定义和⽤法
eval() 函数可计算某个字符串,并执⾏其中的的 JavaScript 代码。
语法
eval(string)
参数描述
string 必需。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执⾏的语句。
返回值
通过计算 string 得到的值(如果有的话)。
说明
该⽅法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该⽅法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。
如果试图覆盖 eval 属性或把 eval() ⽅法赋予另⼀个属性,并通过该属性调⽤它,则 ECMAScript 实现允许抛出⼀个 EvalError 异常。
抛出
如果参数中没有合法的表达式和语句,则抛出 SyntaxError 异常。
如果⾮法调⽤ eval(),则抛出 EvalError 异常。
如果传递给 eval() 的 Javascript 代码⽣成了⼀个异常,eval() 将把该异常传递给调⽤者。
提⽰和注释
提⽰:虽然 eval() 的功能⾮常强⼤,但在实际使⽤中⽤到它的情况并不多。
实例
例⼦ 1
js调用方法的三种写法在本例中,我们将在⼏个字符串上运⽤ eval(),并看看返回的结果:
复制代码代码如下:
<script type="text/javascript">
eval("x=10;y=20;document.write(x*y)")
document.write(eval("2+2"))
var x=10
document.write(eval(x+17))
</script>
输出:
200
4
27
第⼀种⽅法就是使⽤js⾥⾯的eval
下⾯是⾃⼰写的例⼦
代码如下:
call("showmsg");
function call(functionName){
eval("this."+functionName+"()");
}
function showmsg(){
alert("success");
}
eval能将你拼接的字符串⾃动识别为⽅法,并调⽤。
但弊端也是很⼤的,想象⼀下,某个⼈改你调⽤地⽅的⽅法名,便能调⽤你的任意⽅法。第⼆种⽅法主要⽤作⾃⼰定义的⽅法
主要是第⼆种⽅法需要特定的⽅式去写
代码如下:
function call(functionName) {
showmsgs["showmsg"]();
}
var showmsgs = {
showmsg: function () {
alert("success");
}
}
call("showmsg");