JavaScript 5 新增 Array 方法实现介绍

 更新时间:2012年02月06日 11:42:29   作者:  
JavaScript 5 发布有一段时间了,Array 对象新增了很多方法。但在老版本的浏览器上还不能使用,得益于 JavaScript 的动态可扩展性,我实现了这些方法,在此晒出来与君共勉
复制代码 代码如下:

/*!
* jLip JavaScript Library v0.1
*
* Copyright 2012, Lip2up (lip2up@qq.com)
* Just for free use, NO LICENSE
*/
(function() {
function extend(target, props) {
for (var m in props) {
if (target[m] === undefined) target[m] = props[m];
}
}
var fns = { every: 1, some: 2, forEach: 3, map: 4, filter: 5 },
reduceError = 'Reduce of empty array with no initial value';
function each(fn, _this, kind) {
var len = this.length, ret = kind == fns.filter ? []
: kind == fns.map ? Array(len) : undefined,
find = kind == fns.some, i, v;
for (i = 0; i < len; i++) {
if (this[i] !== undefined) {
v = fn.call(_this, this[i], i, this);
switch (kind) {
case fns.every:
case fns.some:
if (v === find) return find;
break;
case fns.map:
ret[i] = v;
break;
case fns.filter:
if (v === true) ret[ret.length] = this[i];
break;
}
}
}
return kind >= fns.forEach ? ret : !find;
}
function reduce(fn, init, right) {
var len = this.length, i, prev, inc = right ? -1 : 1;
if (len == 0 && init === undefined)
throw TypeError(reduceError);
for (i = right ? len - 1 : 0, prev = init;
prev === undefined && (right ? i >= 0 : i < len);
i += inc) {
prev = this[i];
}
if (prev === undefined && i == (right ? -1 : len))
throw TypeError(reduceError);
for (; (right ? i >= 0 : i < len); i += inc) {
if (this[i] !== undefined)
prev = fn(prev, this[i], i, this);
}
return prev;
}
extend(Array.prototype, {
every: function(fn, _this) {
return each.call(this, fn, _this, fns.every);
},
some: function(fn, _this) {
return each.call(this, fn, _this, fns.some);
},
forEach: function(fn, _this) {
return each.call(this, fn, _this, fns.forEach);
},
map: function(fn, _this) {
return each.call(this, fn, _this, fns.map);
},
filter: function(fn, _this) {
return each.call(this, fn, _this, fns.filter);
},
reduce: function(fn, init) {
return reduce.call(this, fn, init);
},
reduceRight: function(fn, init) {
return reduce.call(this, fn, init, true);
}
});
})();

相关文章

  • 使用js简单实现了tree树菜单

    使用js简单实现了tree树菜单

    使用js简单实现了树菜单!具体实现实例代码如下,相信自己你一定可以实现的更好
    2013-11-11
  • javascript文本框内输入文字倒计数的方法

    javascript文本框内输入文字倒计数的方法

    这篇文章主要介绍了javascript文本框内输入文字倒计数的方法,涉及javascript针对键盘事件的操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • js实现点击切换卡片功能

    js实现点击切换卡片功能

    这篇文章主要为大家详细介绍了js实现点击切换卡片功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • javascript模拟实现ajax加载框实例

    javascript模拟实现ajax加载框实例

    这篇文章主要介绍了javascript模拟实现ajax加载框的方法,实例简述了其实现过程,方法简单实用,需要的朋友可以参考下
    2014-10-10
  • js实现右键弹出自定义菜单

    js实现右键弹出自定义菜单

    这篇文章主要为大家详细介绍了js实现右键弹出自定义菜单,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-09-09
  • 简单了解微信小程序的目录结构

    简单了解微信小程序的目录结构

    这篇文章主要介绍了简单了解小程序的目录结构,在开发小程序之前,我们首先需要对其目录结构进行了解,以便于提升开发效率,需要的朋友可以参考下
    2019-07-07
  • 在textarea文本域中显示HTML代码的方法

    在textarea文本域中显示HTML代码的方法

    这篇文章主要为大家介绍下如果在textarea文本域中显示HTML代码,其实多用于网页编辑的开发,大家可以参考下
    2007-03-03
  • js实现页面导航层级指示效果

    js实现页面导航层级指示效果

    这篇文章主要为大家详细介绍了js实现页面导航层级指示效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • Javascript刷新窗口方法小结

    Javascript刷新窗口方法小结

    这篇文章主要介绍了Javascript刷新窗口方法,以实例形式分析了JavaScript刷新窗口的四种常用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • javascript连续赋值问题

    javascript连续赋值问题

    本文通过具体的示例来给大家详细解释了下javascript的连续赋值问题,十分的实用,有需要的小伙伴可以参考下。
    2015-07-07

最新评论