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 兼容所有浏览器的DOM扩展功能
Aug 01 Javascript
javascript 兼容各个浏览器的事件
Feb 04 Javascript
再谈JavaScript异步编程
Jan 27 Javascript
js原生代码实现轮播图的实例讲解
Jul 28 Javascript
javaScript实现滚动条事件详解
Mar 24 Javascript
JS中的事件委托实例浅析
Mar 22 Javascript
JavaScript继承与多继承实例分析
May 26 Javascript
详解从Vue-router到html5的pushState
Jul 21 Javascript
详解基于Vue2.0实现的移动端弹窗(Alert, Confirm, Toast)组件
Aug 02 Javascript
微信小程序实现上传图片裁剪图片过程解析
Aug 22 Javascript
layui自定义验证,用ajax查询后台是否有重复数据,form.verify的例子
Sep 06 Javascript
vue单元格多列合并的实现
Nov 26 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
常用表单验证类,有了这个,一般的验证就都齐了。
2006/12/06 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
收藏Javascript中常用的55个经典技巧
2007/08/12 Javascript
Javascript的常规数组和关联数组对比小结
2012/05/24 Javascript
JavaScript自执行闭包的小例子
2013/06/29 Javascript
JS实现鼠标单击与双击事件共存
2014/03/08 Javascript
JavaScript关闭当前页面(窗口)不带任何提示
2014/03/26 Javascript
JavaScript中双符号的运算详解
2017/03/12 Javascript
Vue路由跳转问题记录详解
2017/06/15 Javascript
基于JavaScript实现百度搜索框效果
2020/06/28 Javascript
对存在JavaScript隐式类型转换的四种情况的总结(必看篇)
2017/08/31 Javascript
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
2017/12/05 Javascript
jquery动态添加带有样式的HTML标签元素方法
2018/02/24 jQuery
JS实现可切换图片的幻灯切换效果示例
2019/05/24 Javascript
JS通过ajax + 多列布局 + 自动加载实现瀑布流效果
2019/05/30 Javascript
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
2019/05/30 NodeJs
js获取 gif 的帧数的代码实例
2019/09/10 Javascript
Vue获取页面元素的相对位置的方法示例
2020/02/05 Javascript
vue实现动态给id赋值,点击事件获取当前点击的元素的id操作
2020/11/09 Javascript
[50:20]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第四局
2016/03/06 DOTA
[56:46]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 VP vs Effect
2018/04/01 DOTA
python实现在目录中查找指定文件的方法
2014/11/11 Python
Python中模块与包有相同名字的处理方法
2017/05/05 Python
《Python学习手册》学习总结
2018/01/17 Python
django rest framework vue 实现用户登录详解
2019/07/29 Python
浅谈pymysql查询语句中带有in时传递参数的问题
2020/06/05 Python
关于django python manage.py startapp 应用名出错异常原因解析
2020/12/15 Python
PyQt5中QSpinBox计数器的实现
2021/01/18 Python
一款基于css3麻将筛子3D翻转特效的实例教程
2014/12/31 HTML / CSS
Html5写一个简单的俄罗斯方块小游戏
2019/12/03 HTML / CSS
世界上最好的帽子:Tilley
2016/11/27 全球购物
技术人员面试提纲
2013/11/28 职场文书
“学雷锋活动月”总结
2014/03/09 职场文书
安全生产先进个人总结
2015/02/15 职场文书
新闻简讯格式及范文
2015/07/22 职场文书
关于车尾的标语大全
2015/08/11 职场文书