资讯专栏INFORMATION COLUMN

重写了JavaScript数组Array的几个原生方法

付永刚 / 3541人阅读

摘要:使用原型,重写了数组的几个简单的方法。我在这抛砖引玉,期待大神更多对象的其他的方法扩展

使用原型,重写了数组的push、pop、shift、unshift几个简单的方法。
我在这抛砖引玉,期待大神更多对象的其他的方法扩展

Array.prototype.push = function(){

                //this: 1,2,3
                //arguments: 4,5,6

                for (var i = 0; i < arguments.length; i++) {
                    this[this.length] = arguments[i];
                }
                return this.length;

            }

Array.prototype.pop = function(num){

                if (num) {
                    this.length = this.length-num
                }else{
                    this.length = this.length-1;
                }
                
                return this.length;
                
            }

Array.prototype.shift = function(){

    
                for (var i = 1; i < this.length; i++) {
                    this[i-1] =this[i];
                }
                this.length = this.length -1;
                return this.length;
                
            }

Array.prototype.unshift = function(){


                for (var i = this.length-arguments.length-1; i >= 0; i--) {   
                    this[arguments.length+i] = this[i];
                }

                for (var j = 0; j < arguments.length; j++) {
                    this[j] =arguments[j];
                }
                return this.length;
                
            }

            var arr = new Array();
            arr = [1,2,3];
            arr.push(4,5,6);
            alert(arr);
            arr.pop();
            alert(arr);
            arr.shift();
            alert(arr);//2,3,4,5
            arr.unshift("a","b");
            alert(arr);//a,b,2,3,4,5

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/88212.html

相关文章

  • 盘点JavaScript里好用的原生API ꒰・◡・๑꒱

    这段时间翻了一番JavaScript的api,发现不少好的轮子,省去造的麻烦了。 直接进入正题 解析字符串对象 我们都知道,JavaScript对象可以序列化为JSON,JSON也可以解析成对象,但是问题是如果出现了一个既不是JSON也不是对象的东西,转成哪一方都不方便,那么eval就可以派上用场 var obj = {a:1,b:2}; // 看起来像对象的字符串 eval((+ ...

    godlong_X 评论0 收藏0
  • 读《javaScript高级程序设计-第6章》之封装类

    摘要:创建构造函数后,其原型对象默认只会取得属性至于其他的方法都是从继承来的。上图展示了构造函数的原型对象和现有的两个实例之间的关系。所有原生的引用类型都在其构造函数的原型上定义了方法。 第6章我一共写了3篇总结,下面是相关链接:读《javaScript高级程序设计-第6章》之理解对象读《javaScript高级程序设计-第6章》之继承 工厂模式 所谓的工厂模式就是,把创建具体对象的过程抽象...

    seal_de 评论0 收藏0
  • 从Vue数组响应化所引发的思考

    摘要:因为无法通过借用构造函数的方式创建响应式属性虽然属性可以被创建,但不具备响应式功能,因此在我们是没法继承数组的。上面整个的文章都是基于监听数组响应的一个点想到的。 前言   首先欢迎大家关注我的Github博客,也算是对我的一点鼓励,毕竟写东西没法获得变现,能坚持下去也是靠的是自己的热情和大家的鼓励。   从上一篇文章响应式数据与数据依赖基本原理开始,我就萌发了想要研究Vue源码的想法...

    hikui 评论0 收藏0
  • 「读懂源码系列2」我从 lodash 源码中学到几个知识点

    摘要:今天要讲的,是我从的源码实现文件中学到的几个很基础,却又容易被忽略的知识点。在函数式编程中,函数是一等公民,它可以只是根据参数,做简单的组合操作,再作为别的函数的返回值。所以,阅读源码,是一种很棒的重温基础知识的方式。 showImg(https://segmentfault.com/img/bVbpTSY?w=750&h=422); 前言 上一篇文章 「前端面试题系列8」数组去重(1...

    Amio 评论0 收藏0
  • JavaScript:遍历

    摘要:中可以实现遍历的数据类型主要是对象,其中包括普通对象与数组。遍历器是一种接口,为各种不同的数据结构提供统一的访问机制。实例五遍历器对象实例五是的遍历过程,通过手动调用其对象的方法实现信息获取。为每个数组元素执行函数。 前言   将依据自身痛点学习,计划对原生JavaScript写一个系统,本文为第一篇,感兴趣的同学可以关注个人公众号:ZeroToOneMe,或者github博客,将持续...

    ThinkSNS 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<