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. EXTJS4.2 级联 下拉

    items: [ { xtype: "fieldcontainer", layout: "hbox", items: [{ xtype: 'combo', na ...

  2. strip_tags--php

    函数剥去字符串中的 HTML.XML 以及 PHP 的标签 strip_tags(string,allow) 参数 描述 string 必需.规定要检查的字符串. allow 可选.规定允许的标签.这 ...

  3. ZOJ - 3430 ac自动机

    这题主要就是解码过程很恶心,不能用char存,一共wa了20发 题意:先给n串加密后的字符,然后m串加密后的字符,解码之后求n对应每个m的匹配数,很显然的ac自动机 加密过程是先用对应ascii表的标 ...

  4. 从AD域获取用户AD信息

    public static Dictionary<string, string> SearchADInfo(string adName) { string strTemp = " ...

  5. 【Prism】MEF版UIComposition

    引言 UIComposition原版Demo在PrismV5的解压包里面.原Demo用了.net4.5版本的DLL,我改成.net4.0的. RegionContext 这个Demo比之前那几个示例大 ...

  6. Python-正则表达式及实战小例子

    注意Python的字符串本身也用'\'转义,所以要特别注意,一般我们都建议使用Python的r前缀,就不用考虑转义的问题了  1,行的起始 例子:匹配‘cat’ 开头 patt=re.compile( ...

  7. scnaf()读入字符串需要注意的地方

    #include<iostream> #include<cstdio> using namespace std; int main() { ],cch[]; int a; ci ...

  8. nyoj-67-三角形面积(S=(1/2)*(x1y2+x2y3+x3y1-x1y3-x2y1-x3y2))

    题目链接 /* Name:nyoj-67-三角形面积 Copyright: Author: Date: 2018/4/26 16:44:47 Description: 三角形的三个顶点坐标求其面积的公 ...

  9. 如果两个人,两台电脑同时登录同一个帐号,同时对同一个账单提交,账单同时被服务器处理,那服务器应该先处理谁的,或者怎么规避这个问题。 非单点登录,重定向,stoken拦截器的问题

    方法一:给用户设置个状态 服务器端坐标记,比如数据库中增加一列,标识是否登陆,登录时先判断这个就行了,不过要考虑非正常退出的情况 http 方法二:在用户表里面 多加一个状态字段,登录成功 改变状态  ...

  10. kong插件官方文档翻译

    kong插件官方文档翻译 目录 介绍 文件结构 编写自定义逻辑 存储配置 访问数据存储 自定义实体 缓存自定义实体 扩展Admin API 编写测试 (卸载)安装你的插件 插件开发 - 介绍 什么是插 ...