javascript中函数作为参数调用的方法


Posted in Javascript onFebruary 09, 2015

本文实例讲述了javascript中函数作为参数调用的方法。分享给大家供大家参考。具体分析如下:

先来看示例:

function Map(){
var obj = {};

this.put = function(key, value){
obj[key] = value;
}

this.eachMap = function(fn){
for(var attr in obj){
fn(attr, obj[attr]);
}
}

}
var m = new Map();
m.put('01', 'abc');
m.put('02', 1024);
m.put('03', true);
m.put('04', 0);
m.put('05', false);

m.eachMap(function(key, value){
alert(key + " : " + value);
});

这段代码执行的顺序是:从上往下顺序解释执行,这是JS的规定。
这里主要说明一下m.eachMap()中函数做为参数是怎么传递并执行的:

step1:执行到m.eachMap这个方法的时候,JS会去找对应的this.eachMap这个方法;
step2:找到this.eachMap这个方法,会根据函数体内的语句顺序执行;
step3:当执行到fn(attr, obj[attr]);的时候,他会返回到for语句执行;注意在返回for语句执行之前,attr是没有值的;从for语句返回之后,attr的值就有了,为‘01',而obj[attr]的值也有了,为‘abc';
step4:接着,fn(attr, obj[attr]);会返回到m.eachMap这个方法的参数函数中,即

function(key, value){
alert(key + " : " + value);
}

attr替换key,obj[attr]替换value,并执行alert语句,输出。

step5:继续执行for循环,重复执行step4,并输出,直到结束。

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript版代码高亮
Jun 26 Javascript
基于prototype的validation.js发布2.3.4新版本,让你彻底脱离表单验证的烦恼
Dec 06 Javascript
学习YUI.Ext 第六天--关于树TreePanel(Part 1)
Mar 10 Javascript
JavaScript的函数式编程基础指南
Mar 19 Javascript
Angular页面间切换及传值的4种方法
Nov 04 Javascript
jquery的父、子、兄弟节点查找,节点的子节点循环方法
Dec 07 Javascript
JavaScript组件开发之输入框加候选框
Mar 10 Javascript
jQuery Validate 校验多个相同name的方法
May 18 jQuery
js canvas实现放大镜查看图片功能
Jun 08 Javascript
jQuery实现点击下拉框中的值累加到文本框中的方法示例
Oct 28 jQuery
用最少的JS代码写出贪吃蛇游戏
Jan 12 Javascript
vue实现列表垂直无缝滚动
Apr 08 Vue.js
javascript自动生成包含数字与字符的随机字符串
Feb 09 #Javascript
angularJS 中$scope方法使用指南
Feb 09 #Javascript
Javascript动态创建div的方法
Feb 09 #Javascript
angularJS 中$attrs方法使用指南
Feb 09 #Javascript
JavaScript实现获取dom中class的方法
Feb 09 #Javascript
angularJS 中input示例分享
Feb 09 #Javascript
angularJS提交表单(form)
Feb 09 #Javascript
You might like
php 购物车实例(申精)
2009/05/11 PHP
php在程序中将网页生成word文档并提供下载的代码
2012/10/09 PHP
用php实现选择排序的解决方法
2013/05/04 PHP
ThinkPHP的L方法使用简介
2014/06/18 PHP
调试PHP程序的多种方法介绍
2014/11/06 PHP
利用PHP自动生成印有用户信息的名片
2016/08/01 PHP
PHP设计模式之原型设计模式原理与用法分析
2018/04/25 PHP
jquery 插件 人性化的消息显示
2008/01/21 Javascript
写了10年的Javascript也未必全了解的连续赋值运算
2011/03/25 Javascript
js查错流程归纳
2012/05/04 Javascript
jQuery contains过滤器实现精确匹配使用方法
2013/04/12 Javascript
利用JS来控制键盘的上下左右键(示例代码)
2013/12/14 Javascript
js左右弹性滚动对联广告代码分享
2014/02/19 Javascript
jquery自动将form表单封装成json的具体实现
2014/03/17 Javascript
javascript结合Canvas 实现简易的圆形时钟
2015/03/11 Javascript
神奇!js+CSS+DIV实现文字颜色渐变效果
2016/03/16 Javascript
ES6入门教程之Class和Module详解
2017/05/17 Javascript
vue中axios的二次封装实例讲解
2019/10/14 Javascript
解决vue语法会有延迟加载显现{{xxx}}的问题
2019/11/14 Javascript
[03:18]DOTA2放量测试专访820:希望玩家加入国服大家庭
2013/08/25 DOTA
[43:48]Ti4正赛第一天 VG vs NEWBEE 2
2014/07/19 DOTA
python操作mysql中文显示乱码的解决方法
2014/10/11 Python
在Django的视图(View)外使用Session的方法
2015/07/23 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
2018/10/11 Python
对python遍历文件夹中的所有jpg文件的实例详解
2018/12/08 Python
Python学习笔记之For循环用法详解
2019/08/14 Python
python 解决flask 图片在线浏览或者直接下载的问题
2020/01/09 Python
浅谈selenium如何应对网页内容需要鼠标滚动加载的问题
2020/03/14 Python
主要的Ajax框架都有什么
2013/11/14 面试题
婚庆开业庆典主持词
2015/06/30 职场文书
小学教师读书笔记
2015/07/01 职场文书
关爱留守儿童主题班会
2015/08/13 职场文书
大学学生会竞选稿
2015/11/19 职场文书
小学生法制教育心得体会
2016/01/14 职场文书
2019公司管理制度
2019/04/19 职场文书
利用python调用摄像头的实例分析
2021/06/07 Python