javascript——对象的概念——函数 3 (使用技巧)
1、回调函数:将函数A传给函数B,由函数B来执行A,则称A为回调函数。
例1:
例2
- function addone(a){return a+;}; //定义一个回调函数
- function mulitiply(a,b,c,callback) //定义一个可以调用回调函数的函数
- {
- var i,ar=new Array();
- for(i=;i<;i++)
- {
- ar[i]=callback(arguments[i]*); //将输入参数乘以2之后作为回调函数的参数执行。
- }
- return ar;
- }
- var myarr=mulitiply(,,,addone);
- myarr; //[3, 5, 7]
指定输入参数个数
改进代码,使其可以忽略输入参数个数。将代码修改后如下:
- function addone(a){return a+1;}; //定义一个回调函数
- function mulitiply(an) //定义一个可以调用回调函数的函数
- {
- var i,ar =new Array(arguments.length-1);
- if (typeof arguments[arguments.length-1]==="function")
- for(i=0;i<arguments.length-1;i++)
- ar[i]=arguments[arguments.length-1](arguments[i]*2); //将输入参数乘以2之后作为回调函数的参数执行。
- return ar;
- }
- var myarr=mulitiply(1,2,3,addone); //这种方式要求回调函数放在参数的最后一个
- myarr; //[3, 5, 7]
- var myarr=mulitiply(1,2,3,4,addone); //这种方式要求回调函数放在参数的最后一个
- myarr; //[3, 5, 7, 9]
不指定输入参数个数
效果如图:
2、返回函数的函数:执行的函数返回值是一个函数引用。
- function a()
- {
- function b()
- {
- return 'B';
- };
- return b; //返回一个函数的引用
- }
- var newfunct=a(); //获得一个函数的引用
- typeof newfunct; //"function"
- newfunct(); //"B"
- a()(); //"B"; a()表示获取一个函数的引用,a()();表示执行获取引用的函数
返回函数的函数
3、重写自己的函数:将一个指向函数的变量指向另一个函数实现重写。
例1:
重写函数常常用于在一个函数执行时必须完成一些初始化工作,这样以后在调用函数就不必重复执行一些不必要的操作。
例2:
结果如下:
- var a=function()
- {
- function init(){document.writeln('进行初始化工作<br/>');};
- function actuall(){ document.writeln('正式进行实际的操作<br/>');};
- init(); //执行初始化工作
- return actuall; //返回函数引用
- } (); //立即运行,变量 a 指向函数actuall
重写函数例子
步骤分解如下:
在大函数内包含了两个小函数,其中 init 用于执行初始化函数,而大函数后面带了(),即大函数立即执行,首先执行了init初始化函数,再次将 actuall 函数的引用赋给了变量a,以后再调用 a 时,就只调用 actuall 函数,而不再执行 init 函数了。
javascript——对象的概念——函数 3 (使用技巧)的更多相关文章
- javascript——对象的概念——函数 2 (内建函数与类型转换)
javascript 有许多内建函数,用于各种操作,以下为常用的内建方法. 1.parseInt(object,int):将输入的 int 进制的值 object 转换为 10 进制的数值: obje ...
- javascript——对象的概念——函数 1 (函数对象的属性和方法)
一.创建函数 函数是一种对象:Function类 是对象,可以通过 Function 实例化一个函数,不过最多的还是利用 function 来创建函数. 方式一:利用 Function类 来实例化函数 ...
- javascript——对象的概念——创建对象与销毁对象
一.创建对象 1.创建空对象 方式一: var o ={};o; //Object {} typeof(o); //"object" 方式二: var o=new Object() ...
- javascript——对象的概念——Object(未完)
http://www.blogjava.net/zkjbeyond/archive/2006/04/16/41336.html javascript中对象只包括属性和方法两种成员.ECMA-262 把 ...
- javascript——对象的概念——内建对象
包括内建对象的所有对象都是Object对象的子对象. 1.Array():构建数组的内建构造器函数 例:创建数组方式有两种: 2.Boolean:是对象,与基本数据类型 布尔值 不相同 例:创建Boo ...
- 前端学习 第二弹: JavaScript中的一些函数与对象(1)
前端学习 第二弹: JavaScript中的一些函数与对象(1) 1.apply与call函数 每个函数都包含两个非继承而来的方法:apply()和call(). 他们的用途相同,都是在特定的作用域中 ...
- 函数可以作为Javascript对象(哈希表)的键吗
一般Javascript书在讲解对象时,都指出Javascript中的对象可以作为哈希表,存储键值数据.通常情况下,键为字符串,如果键是数字的话,实际上在内部也会转换为字符串. 比如 var o = ...
- JavaScript总体的介绍【JavaScript介绍、定义函数方式、对象类型、变量类型】
什么是JavaScript? 我们可以从几个方面去说JavaScript是什么: 基于对象 javaScript中内置了许多对象供我们使用[String.Date.Array]等等 javaScrip ...
- 深入浅出javascript(二)函数和this对象
一.函数对象的属性和方法 函数是一种数据类型,也是对象,这一点很明确.因此,函数对象也可以添加属性和方法,但是这里的属性和方法是静态的,之所以这样说,就是为了区别构造函数. 示例如下: ①创建一个空的 ...
随机推荐
- myEclipse 导入maven项目时报错
1.先右击项目,build Path 查看是否是某个JAR出了错.去掉无用的JAR 以及修改对应的JDK版本 2.检查src源文件,查看是否是源文件出了错.发现,还真的是 导入的包上面,报错:The ...
- QT国际化示例, 检测系统语言,设置适合语言,按键切换显示语言
1.效果如下图,开启就自动检测系统语言,选择系统语言显示, UI有控件设置,在中文和英文之间切换.. 2. 源码 dialog.h #ifndef DIALOG_H #define DIALOG_H ...
- 深入分析理解Tomcat体系结构
Tomcat整体结构 由上图可知Tomcat的顶层容器是Server,而且一个Tomcat对应一个Server,一个server有多个service提供服务.service包含两个重要组件:Conne ...
- js备忘录模式
备忘录(Memento):在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢复到原先保存的状态. 备忘录模式比较适用于功能比较复杂的,但需要维护或记录属性 ...
- Asp.net 检测到有潜在危险的 Request.From值
因为Asp.net对客户端提交的数据进行了基本的安全验证,检测是否有最基础的 sql注入 或者 xss跨站脚本攻击代码. 如果你提交了:</div><script type=&quo ...
- webservice中将dataset 压缩
http://blog.csdn.net/bodaowang/article/details/6889446 在webservice中将dataset序列化是我们经常遇到的问题,但是遇到很大的data ...
- 卸载全部appx应用(包括应用商店)
在PowerShell中粘贴: Get-AppXPackage | Remove-AppxPackage
- TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议【转】
转自:http://blog.csdn.net/goodboy1881/article/details/668556 把这三个协议放到一起学习是因为这三个协议处于同一层(网际层),ARP协议用来找到目 ...
- ubuntu16.04下安装配置深度学习环境(Ubuntu 16.04/16.10+ cuda7.5/8+cudnn4/5+caffe)
主要参照以下两篇博文:http://blog.csdn.net/g0m3e/article/details/51420565 http://blog.csdn.net/xuzhongxiong/a ...
- 骨骼动画 cocos2d-x + cocoStudio <cocos2d-x : version 2.2.0>
cocos2d-x version 2.2.0 首先,在 HelloWorldScene.cpp 中的 init()函数中 添加如下代码 (资源文件可以直接到 cocos2d-x 中获取) #incl ...