JS动态调用方法名示例介绍


Posted in Javascript onDecember 18, 2013

先看看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

在本例中,我们将在几个字符串上运用 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

例子 2

看一下在其他情况中,eval() 返回的结果:

eval("2+3") // 返回 5 
var myeval = eval; // 可能会抛出 EvalError 异常 
myeval("2+3"); // 可能会抛出 EvalError 异常

可以使用下面这段代码来检测 eval() 的参数是否合法:
try { 
alert("Result:" + eval(prompt("Enter an expression:",""))); 
} catch(exception) { 
alert(exception); 
}

第一种方法就是使用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");
Javascript 相关文章推荐
document.all还是document.getElementsByName?
Jul 21 Javascript
javascript 函数速查表
Feb 07 Javascript
javascript的console.log()用法小结
May 31 Javascript
javascript简单性能问题及学习笔记
Feb 04 Javascript
jQuery实现仿百度帖吧头部固定导航效果
Aug 07 Javascript
jQuery平滑旋转幻灯片特效代码分享
Sep 07 Javascript
详解AngularJS之$window窗口对象
Jan 17 Javascript
js实现点击展开隐藏效果(实例代码)
Sep 28 Javascript
解决layui下拉框监听问题(监听不到值的变化)
Sep 28 Javascript
jQuery三组基本动画与自定义动画操作实例总结
May 09 jQuery
Vue中使用JsonView来展示Json树的实例代码
Nov 16 Javascript
关于Javascript闭包与应用的详解
Apr 22 Javascript
javascript页面动态显示时间变化示例代码
Dec 18 #Javascript
页面实时更新时间的JS实例代码
Dec 18 #Javascript
带左右箭头图片轮播的JS代码
Dec 18 #Javascript
用js代码改变单选框选中状态的简单实例
Dec 18 #Javascript
浅析document.ready和window.onload的区别讲解
Dec 18 #Javascript
浅谈Javascript 执行顺序
Dec 18 #Javascript
Javascript浅谈之引用类型
Dec 18 #Javascript
You might like
Apache设置虚拟WEB
2006/10/09 PHP
Ajax PHP分页演示
2007/01/02 PHP
使用apache模块rewrite_module (转)
2007/02/14 PHP
PHP学习之字符串比较和查找
2011/04/17 PHP
PHP之生成GIF动画的实现方法
2013/06/07 PHP
mac下Apache + MySql + PHP搭建网站开发环境
2014/06/02 PHP
PHP封装的完整分页类示例
2018/08/21 PHP
THINKPHP5分页数据对象处理过程解析
2020/10/28 PHP
Web 前端设计模式--Dom重构 提高显示性能
2010/10/22 Javascript
JavaScript匿名函数用法分析
2015/02/13 Javascript
基于javascript实现图片滑动效果
2016/05/07 Javascript
利用JS实现数字增长
2016/07/28 Javascript
关于vue中watch检测到不到对象属性的变化的解决方法
2018/02/08 Javascript
详解JavaScript中的数组合并方法和对象合并方法
2018/05/11 Javascript
解决bootstrap中下拉菜单点击后不关闭的问题
2018/08/10 Javascript
Angular 实现输入框中显示文章标签的实例代码
2018/11/07 Javascript
详解小程序循环require之坑
2019/03/08 Javascript
[04:04]DOTA2亚洲邀请赛比赛场馆&酒店全攻略
2017/03/23 DOTA
Python的print用法示例
2014/02/11 Python
Python下实现的RSA加密/解密及签名/验证功能示例
2017/07/17 Python
go和python变量赋值遇到的一个问题
2017/08/31 Python
Python使用numpy模块创建数组操作示例
2018/06/20 Python
基于python 等频分箱qcut问题的解决
2020/03/03 Python
Python实现自动打开电脑应用的示例代码
2020/04/17 Python
HTML5 canvas实现移动端上传头像拖拽裁剪效果
2016/03/14 HTML / CSS
HTML实现代码雨源码及效果示例
2020/02/25 HTML / CSS
彪马加拿大官网:PUMA加拿大
2018/10/04 全球购物
欧洲、亚洲、非洲和拉丁美洲的度假套餐:Great Value Vacations
2019/03/30 全球购物
法雷奥SQA(electric)面试问题
2016/01/23 面试题
大学自荐信
2013/12/12 职场文书
教师教学评估方案
2014/05/09 职场文书
学校安全生产月活动总结
2014/07/05 职场文书
2014个人年终工作总结范文
2014/12/15 职场文书
2016年“抗战胜利纪念日”71周年校园广播稿
2015/12/18 职场文书
党员廉政准则心得体会
2016/01/20 职场文书
python数据可视化JupyterLab实用扩展程序Mito
2021/11/20 Python