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 相关文章推荐
使用Node.js实现HTTP 206内容分片的教程
Jun 23 Javascript
使用 stylelint检查CSS_StyleLint
Apr 28 Javascript
Vue 2.0 服务端渲染入门介绍
Mar 29 Javascript
自带气泡提示的vue校验插件(vue-verify-pop)
Apr 07 Javascript
angular写一个列表的选择全选交互组件的示例
Jan 22 Javascript
JavaScript之实现一个简单的Vue示例
Jan 17 Javascript
微信小程序云开发如何使用npm安装依赖
May 18 Javascript
vue3实现v-model原理详解
Oct 09 Javascript
Vue分页效果与购物车功能
Dec 13 Javascript
JS数组扁平化、去重、排序操作实例详解
Feb 24 Javascript
vue实现评价星星功能
Jun 30 Javascript
一百多行代码实现react拖拽hooks
Mar 23 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
一些星际专用术语解释
2020/03/04 星际争霸
用PHP 4.2书写安全的脚本
2006/10/09 PHP
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
2014/04/24 PHP
jQuery EasyUI 的EasyLoader功能介绍
2010/09/12 Javascript
jquery获取div宽度的实现思路与代码
2013/01/13 Javascript
jquery ui dialog实现弹窗特效的思路及代码
2013/08/03 Javascript
replace()方法查找字符使用示例
2013/10/28 Javascript
javascript中全局对象的isNaN()方法使用介绍
2013/12/19 Javascript
自定义jquery模态窗口插件无法在顶层窗口显示问题
2014/05/29 Javascript
jquery简单的弹出层浮动层代码
2015/04/27 Javascript
jQuery实现放大镜效果实例代码
2016/03/17 Javascript
JS之获取样式的简单实现方法(推荐)
2016/09/13 Javascript
js数组去重的hash方法
2016/12/22 Javascript
javascript ASCII和Hex互转的实现方法
2016/12/27 Javascript
解决webpack -p压缩打包react报语法错误的方法
2017/07/03 Javascript
ES6 javascript中class类的get与set用法实例分析
2017/10/30 Javascript
浅谈Vue内置component组件的应用场景
2018/03/27 Javascript
vue项目动态设置页面title及是否缓存页面的问题
2018/11/08 Javascript
Vue 中的受控与非受控组件的实现
2018/12/17 Javascript
解决ant design vue 表格a-table二次封装,slots渲染的问题
2020/10/28 Javascript
用python 制作图片转pdf工具
2015/01/30 Python
Python的Django框架中if标签的相关使用
2015/07/15 Python
wxpython中自定义事件的实现与使用方法分析
2016/07/21 Python
如何实现删除numpy.array中的行或列
2018/05/08 Python
Python使用matplotlib 模块scatter方法画散点图示例
2019/09/27 Python
Python实现实时数据采集新型冠状病毒数据实例
2020/02/04 Python
Tensorflow tf.tile()的用法实例分析
2020/05/22 Python
python--shutil移动文件到另一个路径的操作
2020/07/13 Python
俄罗斯EPL钻石珠宝店:ЭПЛ
2019/10/22 全球购物
北京大学自荐信范文
2014/01/28 职场文书
个人党性剖析材料
2014/02/03 职场文书
先进个人主要事迹怎么写
2015/11/04 职场文书
高二化学教学反思
2016/02/22 职场文书
宪法宣传标语100条
2019/10/15 职场文书
redis哨兵常用命令和监控示例详解
2021/05/27 Redis
mysql的数据压缩性能对比详情
2021/11/07 MySQL