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 (使用技巧)的更多相关文章

  1. javascript——对象的概念——函数 2 (内建函数与类型转换)

    javascript 有许多内建函数,用于各种操作,以下为常用的内建方法. 1.parseInt(object,int):将输入的 int 进制的值 object 转换为 10 进制的数值: obje ...

  2. javascript——对象的概念——函数 1 (函数对象的属性和方法)

    一.创建函数 函数是一种对象:Function类 是对象,可以通过 Function 实例化一个函数,不过最多的还是利用 function 来创建函数. 方式一:利用 Function类 来实例化函数 ...

  3. javascript——对象的概念——创建对象与销毁对象

    一.创建对象 1.创建空对象 方式一: var o ={};o; //Object {} typeof(o); //"object" 方式二: var o=new Object() ...

  4. javascript——对象的概念——Object(未完)

    http://www.blogjava.net/zkjbeyond/archive/2006/04/16/41336.html javascript中对象只包括属性和方法两种成员.ECMA-262 把 ...

  5. javascript——对象的概念——内建对象

    包括内建对象的所有对象都是Object对象的子对象. 1.Array():构建数组的内建构造器函数 例:创建数组方式有两种: 2.Boolean:是对象,与基本数据类型 布尔值 不相同 例:创建Boo ...

  6. 前端学习 第二弹: JavaScript中的一些函数与对象(1)

    前端学习 第二弹: JavaScript中的一些函数与对象(1) 1.apply与call函数 每个函数都包含两个非继承而来的方法:apply()和call(). 他们的用途相同,都是在特定的作用域中 ...

  7. 函数可以作为Javascript对象(哈希表)的键吗

    一般Javascript书在讲解对象时,都指出Javascript中的对象可以作为哈希表,存储键值数据.通常情况下,键为字符串,如果键是数字的话,实际上在内部也会转换为字符串. 比如 var o = ...

  8. JavaScript总体的介绍【JavaScript介绍、定义函数方式、对象类型、变量类型】

    什么是JavaScript? 我们可以从几个方面去说JavaScript是什么: 基于对象 javaScript中内置了许多对象供我们使用[String.Date.Array]等等 javaScrip ...

  9. 深入浅出javascript(二)函数和this对象

    一.函数对象的属性和方法 函数是一种数据类型,也是对象,这一点很明确.因此,函数对象也可以添加属性和方法,但是这里的属性和方法是静态的,之所以这样说,就是为了区别构造函数. 示例如下: ①创建一个空的 ...

随机推荐

  1. Delphi 的 Utf-8 转换

    新版的 Delphi 應該不用這麼麻煩, 據說只要直接在 AnsiString, WideString, UTF8String 之間 assign 時就會自動幫你做轉換 (沒用過, 不知道是不是真的這 ...

  2. shitf+tab

    在eclipse中,shitf+tab可以使代码向左移动.

  3. UML用例建模解析(二)---------用例执行者之间关系

    (1) 关联关系 关联关系是指执行者与用例之间的关系,又称为通信关系,如果某个执行者可以对某个用例进行操作,它们之间就具有关联关系,如下图所示,“经理”有一个功能为“查看库存报表”,因此可以在执行者“ ...

  4. 2017-03-05 CentOS中配置守护服务(Supervisor)监听dotnet core web程序的运行

    我们继续解决上篇博客的问题,我这个人有个毛病,不喜欢遗留什么问题,也不喜欢问题说不明白,具体要怎么解决一定要详尽,因为经常自己遇到问题的时候,去翻别人的博客,就会遇到这样的问题,很苦恼,又说废话了. ...

  5. ADO.NET实体框架Entity Framework模型-基于元数据解析

           上一篇简单介绍了EF的XML模型结构,在基于xml解析一文中,主要使用xml查询技术Xpath,XQuery来得到实体模型中相应信息的,由于这种方式在数据库庞大,表关系复杂的情况下,有诸 ...

  6. 强制关闭iPhone iPad AppleWatch MacOS

    iPhone/iPad 强制关闭APP:按住Power(电源键),出现关机界面松开,按住Home键9秒左右. 强制重启/关机:同时按住Power和Home键几秒后重启,出现logo时松开Home继续按 ...

  7. 23 Python 面向对象

    面向过程 VS 面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了写程序的复 ...

  8. oracle decode函数 和 case when

    1.oracle decode分支函数 select decode(to_char(B.LQSJ, 'hh24:mi:ss'), '00:00:00', to_char(B.LQSJ, 'yyyy-m ...

  9. Django 框架概况

    Django 里更关注的是模型(Model).模板(Template)和视图(Views),称为 MTV模式: M 代表模型(Model),即数据存取层. 该层处理与数据相关的所有事务:如何存取.如何 ...

  10. Codeforces Round #276 (Div. 2)A. Factory(数论)

    这道题可以暴力的一直按要求的方法去做,做1000000次还不能整除m就认为永远不能整除m了(m不超过100000,循环1000000次比较安全了已经).这种方法可以AC. 下面深入的分析一下到底循环多 ...