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 相关文章推荐
许愿墙中用到的函数
Oct 07 Javascript
Javascript 实现TreeView CheckBox全选效果
Jan 11 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
Aug 28 Javascript
KnockoutJS 3.X API 第四章之数据控制流component绑定
Oct 10 Javascript
谈谈因Vue.js引发关于getter和setter的思考
Dec 02 Javascript
el表达式 写入bootstrap表格数据页面的实例代码
Jan 11 Javascript
jQuery Validate插件ajax方式验证输入值的实例
Dec 21 jQuery
js调用设备摄像头的方法
Jul 19 Javascript
微信小程序实现蒙版弹窗效果
Nov 01 Javascript
vue学习之Vue-Router用法实例分析
Jan 06 Javascript
仿照Element-ui实现一个简易的$message方法
Sep 14 Javascript
比较node.js和Deno
Apr 27 Javascript
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中防止SQL注入实现代码
2011/02/19 PHP
php中使用session防止用户非法登录后台的方法
2015/01/27 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
JS无限树状列表实现代码
2011/01/11 Javascript
JavaScript ( (__ = !$ + $)[+$] + ({} + $)[_/_] +({} + $)[_/_] )
2011/02/25 Javascript
JavaScript ECMA-262-3 深入解析.第三章.this
2011/09/28 Javascript
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
node.js开机自启动脚本文件
2014/12/24 Javascript
JQuery给网页更换皮肤的方法
2015/05/30 Javascript
jquery选择器简述
2015/08/31 Javascript
js如何打印object对象
2015/10/16 Javascript
使用node+vue.js实现SPA应用
2016/01/28 Javascript
js, jQuery实现全选、反选功能
2017/03/08 Javascript
Vue计算属性的学习笔记
2017/03/22 Javascript
vue实现组件之间传值功能示例
2018/07/13 Javascript
解决Vue开发中对话框被遮罩层挡住的问题
2018/11/26 Javascript
Next.js实现react服务器端渲染的方法示例
2019/01/06 Javascript
node微信开发之获取access_token+自定义菜单
2019/03/17 Javascript
[47:38]Optic vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[01:19:33]DOTA2-DPC中国联赛 正赛 iG vs VG BO3 第一场 2月2日
2021/03/11 DOTA
跟老齐学Python之永远强大的函数
2014/09/14 Python
python hash每次调用结果不同的原因
2019/11/21 Python
python实现百度OCR图片识别过程解析
2020/01/17 Python
Python基础之字典常见操作经典实例详解
2020/02/26 Python
Python GUI编程学习笔记之tkinter控件的介绍及基本使用方法详解
2020/03/30 Python
详解python对象之间的交互
2020/09/29 Python
Python jieba结巴分词原理及用法解析
2020/11/05 Python
西班牙电子产品购物网站:Electronicamente
2018/07/26 全球购物
意大利香水和化妆品购物网站:Parfimo.it
2019/10/06 全球购物
计算机专业学生求职信分享
2013/12/15 职场文书
简洁的英文求职信范文
2014/05/03 职场文书
服装发布会策划方案
2014/05/22 职场文书
2015年乡镇安全生产工作总结
2015/05/19 职场文书
小学体育跳绳课教学反思
2016/02/16 职场文书
redis requires ruby version2.2.2的解决方案
2021/07/15 Redis
动画电影《龙珠超 超级英雄》延期上映
2022/03/20 日漫