JavaScript的函数使用的示例
来源:互联网 发布:js调用cmd 编辑:程序博客网 时间:2024/05/16 00:36
首先试一下两段代码的不同结果
代码一
var Util = { Math: function() { if (arguments.length === 1) { return Number(arguments[0]); } var left = Number(arguments[0]); var right = Array.prototype.splice.call(arguments, 1); return left + Util.Math.apply(this, right); } } var NewUtil = { NewMath: Util.Math }; Util = {}; alert(NewUtil.NewMath(1, 2, 3, 4, 5, 6, 7, 8, 9));
代码二
var Util = { Math: function MathMethod() { if (arguments.length === 1) { return Number(arguments[0]); } var left = Number(arguments[0]); var right = Array.prototype.splice.call(arguments, 1); return left + MathMethod.apply(this, right); } } var NewUtil = { NewMath: Util.Math }; Util = {}; alert(NewUtil.NewMath(1, 2, 3, 4, 5, 6, 7, 8, 9));
第二种方式的说明
var Util = { //使用递归方法来实现数值数组的连加 //第一种方式中使用的是匿名函数,必须要通过this或者Util才能调用到Math方法, //而第二种是为其函数命名,函数名本身也是一个变量,考虑到函数的闭包的特性, //这个函数名变量会保留下来,即使Util被清空 Math: function MathMethod() { //因为数组的变量数无法控制所以采用arguments来取得参数 if (arguments.length === 1) { //当判断数组的最后一个数值后返回结果 return Number(arguments[0]); } //每次取得第一个参数 var left = Number(arguments[0]); //将剩下的参数从arguments参数列表的第二位开始截取 //这里有一个问题因为arguments虽然有length变量,但是它并不是数组 //为了使用数组的splice方法采用Array.prototype.splice.call方式, //为数组指定作用域,有的书中说可以将其理解为对Array对象的欺骗,个人觉得这个比喻非常之贴切,呵呵 var right = Array.prototype.splice.call(arguments, 1); //计算得到结果 return left + MathMethod.apply(this, right); } }
顺便提一句
//该方式主要用于定义工具对象,既直接被调用的var Util = {}//该方式主要用于定义类对象,既New实例化之后在使用var Util = function(){}
- JavaScript的函数使用的示例
- 函数指针的使用示例
- 函数的几个使用示例
- javascript函数的使用
- JavaScript的函数使用
- 使用JavaScript调用WebService的示例
- MongoDB的JavaScript驱动使用示例
- JavaScript的函数的使用
- 一般文件操作函数的使用示例
- //函数返回结构的使用示例
- Linux的exec族函数使用示例
- Linux系统sigaction函数的使用示例
- PHP函数register_shutdown_function的使用示例
- 【Python】Pandas的apply函数使用示例
- jdk8的datetime时间函数使用示例
- strhcr函数的使用简单示例
- Python】Pandas的apply函数使用示例
- JAVASCRIPT的MVC示例
- 石油大王洛克菲勒写给儿子的一封关于工作和快乐的信
- ZOJ 2083 SG博弈
- MyBatis_typeAliases
- DSP指数编码器(EXP)工作原理
- BFS+一点点数学 HDU1226超级密码
- JavaScript的函数使用的示例
- mysqldump备份还原和mysqldump导入导出语句大全详解 转
- Maven依赖的配置
- rabbitmq
- auto、static、register、const、volatile 、extern
- C#基础知识回顾
- 判断一个数是否只有一个峰值
- MyBatis_typeHandlers
- 关于malloc、free、realloc的一些奇葩问题