`
zhangyaochun
  • 浏览: 2596734 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

jQuery源码浅谈系列---$.map

阅读更多

 

jQuery源码浅谈系列---$.map

 

其实这个api的实现原理上会很类似我以前写的$.each的一些思想。如果你弄懂了前面这个,我想再来看看$.map可能就很容易理解了

 

-------------功能上针对的是Array,将一个Array的元素转换到另一个数组中

 

ps:昨天和光哥探讨一些技术的时候忽然光哥问我 你觉得map到底是什么? thinking...............

 

 

先上源码:

 

 

/*
@param  elems是传过来的array对象
@param  callback是传过来的回调处理函数
@args 是jQuery内部使用时候传的一个标志,比如remove这些api
@return ret-----新的数组
@remark 源码做了一些写法上的小改动 比如早定义length 个人习惯吧
*/
map: function(elems,callback,args){
         var ret = [],
               value,
               i
               length = elems.length;
         //根据length进行数组对象的遍历
         for(i=0;i<length;i++){
              //callback进行回调--函数调用模式,this被绑定到全局对象
              value = callback(elems[i],i,arg);
              //回调的值与null进行比较再往ret中装
              if(value != null){
                    //这样的写法也是一种优化,比push这个好,个人比较推荐
                    ret[ret.length] = value;
              }
         }
}
 

 

 

下面继续贴上我整理的凤凰lib里面的array.map

 

 

/*
*map-traverse the array with the func into an new array*
*@param {Array} source---the array*
*@param {Function} iterator---the func*
*@param {Object} thisObj*
*@remark(if thisObj is not defined,default the source)*
*@return {Array} results----after map*
*/
ZYC.array.map = function(source,iterator,thisObj){
        var results = [],
		    i=0,
                    _length =source.length;
		for(;i<_length;i++){	 
          //这边我的函数调用方式是call,支持了第3个参数thisObj
          //如果thisObj没有定义的话就直接拿source
          //思想参照了tangram
         //没有对返回值进行null的判断直接装
          results[i] = iterator.call(thisObj ||source, source[i],i);
		}
		return results;
};
 

 

 

 

 

 

分享到:
评论

相关推荐

    jquery.datepicker-zh-CN.js

    jquery datepicker 的中文包 调用方法 &lt;script src="./public/js/jquery-ui-1.10.3.min.js"&gt; &lt;script src="./public/js/jquery.datepicker-zh-CN.js"&gt;&lt;/script&gt; &lt;link href="./public/css/jqueryui/jquery-ui-...

    jquery-3.7.0.min.js(jQuery下载)

    jquery-3.7.0.min.js(jQuery下载)jquery-3.7.0.min.js(jQuery下载)jquery-3.7.0.min.js(jQuery下载)jquery-3.7.0.min.js(jQuery下载)jquery-3.7.0.min.js(jQuery下载)jquery-3.7.0.min.js(jQuery下载)...

    jquery-3.3.1.js和jquery-3.3.1.min.js

    jquery-3.3.1.js和jquery-3.3.1.min.js免费下载哈。jquery-3.3.1.js和jquery-3.3.1.min.js免费下载哈。jquery-3.3.1.js和jquery-3.3.1.min.js免费下载哈。jquery-3.3.1.js和jquery-3.3.1.min.js免费下载哈。jquery-...

    jquery.ui.datepicker-zh-CN.js

    jquery-ui中文日历控件,使用的时候记得先把文档编码改为UTF-8,否则中文显示乱码!

    开发工具 jquery-1.11.3.min

    开发工具 jquery-1.11.3.min开发工具 jquery-1.11.3.min开发工具 jquery-1.11.3.min开发工具 jquery-1.11.3.min开发工具 jquery-1.11.3.min开发工具 jquery-1.11.3.min开发工具 jquery-1.11.3.min开发工具 jquery-...

    Jquery智能提示完整全部版本vsdoc.js

    jquery-1.3.2-vsdoc.js jquery-1.8.3.min.js jquery-1.3.2.min.js jquery-1.4.1-vsdoc.js jquery-1.4.1.min.js jquery-1.4.2-vsdoc.js jquery-1.4.2.min.js jquery-1.4.3-vsdoc.js jquery-1.4.3.min.js ...

    jquery-3.5.0.js jquery-3.5.0.min.js.zip

    jquery-3.5.0.js jquery-3.5.0.min.js.zip

    jquery.mobile-1.4.5.min.js 含sources源码

    jquery.mobile-1.4.5.min.js A Touch-Optimized Web Framework jQuery Mobile is a ...jquery.mobile-1.4.5.js // 这个是源码哦 jquery.mobile-1.4.5.min.css jquery.mobile.structure-1.4.5.min.css

    jquery.i18n.properties-min-1.0.9.js

    jquery.i18n.properties-min-1.0.9 主要用于国际化和读取properties文件

    jquery.qtip-1.0.0-rc3.js

    jquery.qtip-1.0.0-rc3.js 弹出层

    jquery插件jquery-ui-1.8.2.custom.min.js

    《jQuery UI与jQuery插件深度解析——以jquery-ui-1.8.2.custom.min.js为例》 在Web开发领域,jQuery库以其简洁易用的API和强大的功能深受开发者喜爱。而jQuery UI作为jQuery的一个扩展,提供了丰富的用户界面组件...

    jquery-3.3.1.js和jquery.min-3.3.1.js

    《jQuery核心库:深入理解jquery-3.3.1.js与jquery.min-3.3.1.js》 jQuery,作为一款广泛使用的JavaScript库,极大地简化了网页中的DOM操作、事件处理、动画设计以及Ajax交互。在给定的文件中,我们有两个版本的...

    jquery-1.12.4-jquery.min.js.zip

    《jQuery 1.12.4.min.js:前端开发中的基石》 在现代网页开发中,jQuery 是一个不可或缺的库,它极大地简化了JavaScript的使用,使得DOM操作、事件处理、动画效果以及Ajax交互变得更加简单易行。"jquery-1.12.4-...

    jquery.json-2.3.min.js和jquery.json-2.3.js

    jquery.json-2.3.min.js和jquery.json-2.3.js jQuery为开发插件提拱了两个方法,分别是:jQuery.extend(object); 为扩展jQuery类本身 jQuery.fn.extend(object);给jQuery对象添加方法。

    最新jquery.mobile-1.4.0 jquery.mobile-1.4.0.zip

    最新jquery.mobile-1.4.0 jquery.mobile-1.4.0.zip 含Demos 最新jquery.mobile-1.4.0-UI(jQuery+CSS+images+demos.index.html) jquery.mobile-1.4.0.min... jquery.mobile-1.4.0.min.map(各种IDE环境的智能提示)

    jquery1.2.3到3.3.1版本都有

    jquery1.2.3到3.3.1版本都有: jquery-1.10.2.min.js jquery-1.11.1.min.js jquery-1.11.3.min.js jquery-1.2.3.min.js jquery-1.3.2.min.js jquery-1.4.2.min.js jquery-1.4.4.min.js jquery-1.5.2.min.js jquery-...

    jquery-1.11.1.js 、jquery-1.11.1.min.js 【官方jquery包 js】

    《jQuery 1.11.1:高效前端开发的核心库》 jQuery,作为JavaScript库的代表性作品,一直以来都是Web开发者的重要工具。这个压缩包包含了两个版本的jQuery——`jquery-1.11.1.js`和`jquery-1.11.1.min.js`,它们都是...

    jquery-3.5.1.min.js_jquery-3.5.1.min.js_jquery_

    《jQuery 3.5.1:JavaScript开发者的得力助手》 jQuery,作为一款广泛使用的JavaScript库,一直以来都是Web开发者的首选工具。标题中的“jquery-3.5.1.min.js”代表的是jQuery库的3.5.1版本的压缩后的最小化文件,...

Global site tag (gtag.js) - Google Analytics