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 相关文章推荐
JS解密入门 最终变量劫持
Jun 25 Javascript
JSQL SQLProxy 的 php 版本代码
May 05 Javascript
jQuery如何获取同一个类标签的所有值(默认无法获取)
Sep 25 Javascript
js实现有过渡渐变效果的图片轮播相册(兼容IE,ff)
Jan 19 Javascript
javascript实现下雪效果【实例代码】
May 03 Javascript
14 个折磨人的 JavaScript 面试题
Aug 08 Javascript
JavaScript制作颜色反转小游戏
Sep 25 Javascript
讲解vue-router之什么是编程式路由
May 28 Javascript
Vue头像处理方案小结
Jul 26 Javascript
基于vue、react实现倒计时效果
Aug 26 Javascript
VUE:vuex 用户登录信息的数据写入与获取方式
Nov 11 Javascript
npx create-react-app xxx创建项目报错的解决办法
Feb 17 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
hadoop常见错误以及处理方法详解
2013/06/19 PHP
thinkPHP3.x常量整理(预定义常量/路径常量/系统常量)
2016/05/20 PHP
PHP is_array() 检测变量是否是数组的实现方法
2016/06/13 PHP
PHP手机号码及邮箱正则表达式实例解析
2020/07/11 PHP
宝塔面板在NGINX环境中TP5.1如何运行?
2021/03/09 PHP
Prototype使用指南之selector.js
2007/01/10 Javascript
jQuery库与其他JS库冲突的解决办法
2010/02/07 Javascript
JavaScript中的排序算法代码
2011/02/22 Javascript
基于jquery的回到页面顶部按钮
2011/06/27 Javascript
jQuery实现带分组数据的Table表头排序实例分析
2015/11/24 Javascript
zepto与jquery的区别及zepto的不同使用8条小结
2016/07/28 Javascript
js使用Replace结合正则替换重复出现的字符串功能示例
2016/12/27 Javascript
如何学JavaScript?前辈的经验之谈
2016/12/28 Javascript
angular.js4使用 RxJS 处理多个 Http 请求
2017/09/23 Javascript
基于Vue实现图书管理功能
2017/10/17 Javascript
浅谈HTTP 缓存的那些事儿
2018/10/17 Javascript
javascript严格模式详解(含严格模式与非严格模式的区别)
2019/11/12 Javascript
封装 axios+promise通用请求函数操作
2020/08/11 Javascript
Python中暂存上传图片的方法
2015/02/18 Python
用Python展示动态规则法用以解决重叠子问题的示例
2015/04/02 Python
python去除文件中空格、Tab及回车的方法
2016/04/12 Python
Python利用Beautiful Soup模块搜索内容详解
2017/03/29 Python
Python简单生成随机数的方法示例
2018/03/31 Python
Python 捕获代码中所有异常的方法
2020/08/03 Python
Python代码覆盖率统计工具coverage.py用法详解
2020/11/25 Python
使用OpenCV校准鱼眼镜头的方法
2020/11/26 Python
浅析HTML5中的download属性使用
2019/03/13 HTML / CSS
曼联官方网上商店:Manchester United Direct
2017/07/28 全球购物
教师职称自我鉴定
2014/02/12 职场文书
纪检干部现实表现材料
2014/08/21 职场文书
幼儿园六一活动总结
2014/08/27 职场文书
总经理检讨书范文
2015/02/16 职场文书
小学班主任自我评价
2015/03/11 职场文书
2015年幼儿园学前班工作总结
2015/05/18 职场文书
MySQL删除和插入数据很慢的问题解决
2021/06/03 MySQL
oracle连接ODBC sqlserver数据源的详细步骤
2021/07/25 Oracle