美文网首页前端是万能的Web前端之路让前端飞
一道面试题的深思,实现一个 JS 原型方法

一道面试题的深思,实现一个 JS 原型方法

作者: 肆意木 | 来源:发表于2017-09-05 22:28 被阅读87次

题目描述:

实现原生 splice() 方法,其它的数组方法可以用。

背景介绍:

因为个人原因,今天没在学校,电话面试的时候我没有带电脑,只是记得自己实现过这个方法,最后描述了很多,面试官还是很难理解我的思路,就去我的简书看我文章。(http://www.jianshu.com/p/f2c548ccfca8),但是时间有点久了,我自己对逻辑也有点模糊了,也时间复杂度都没能一下子想到,有点惭愧,最后面试官点拨了我一下,用数组连接的方法,我大概说了一下我的思路,现在回到学校,完善了代码(真的比我之前的方法好很多)。

Array.prototype.ssplit = function () {
    if (arguments.length === 2) {
        return this.slice(0, arguments[0])
    } else {
        var arr1 = this.slice(0, arguments[0]);
        var arr2 = this.slice(arguments[arguments[0] + arguments[1], this.length]);
        var arr3 = [];
        for (var i = 2; i < arguments.length; i++) {

            arr3.push(arguments[i]);
        }
        return arr1.concat(arr2.concat(arr3))
    }

};

var arr = [1, 2, 3];
console.log(arr.ssplit(1, 2, 5, 6, 7, 8))      //[ 1, 5, 6, 7, 8 ]

补充:

最后面试官问了我,arguments 的数据类型,我也不知道我在哪看到的文章,反正记忆力,就是空的时候,数据类型是 undefined,一个参数的时候是 number,其它都是 array,回来试了一下,发现真是错的离谱:

Array.prototype.ssplit = function () {
    return arguments
};
var arr = [1, 2, 3];
console.log(arr.ssplit())                    //{}
console.log(arr.ssplit(1))                  //{ '0': 1 }
console.log(arr.ssplit(1,2,3,4,5))      //{ '0': 1, '1': 2, '2': 3, '3': 4, '4': 5 }

谨记啊:

实践是检验真理的唯一标准!
温故而知新!

相关文章

  • 一道面试题的深思,实现一个 JS 原型方法

    题目描述: 实现原生 splice() 方法,其它的数组方法可以用。 背景介绍: 因为个人原因,今天没在学校,电话...

  • 2019-12-03面试题部分整理

    一道关于原型链的面试题 详解JS函数柯里化 https://www.jianshu.com/p/2975c25e4...

  • JS继承

    JS继承的几种实现方式 继承是指子类继承父类的属性和方法,要实现继承,首先我们需要有一个父类 原型链继承 原型链继...

  • 原型与继承

    1.js是通过原型链来实现继承 基本思想是利用原型的一个引用类型继承另一个引用类型的属性和方法。原型对象将包含一个...

  • 一道面试题引发的思考

    起因 今天跟一位程序员朋友日常聊天,聊到了一道面试题: 请用JS实现一个函数InsertItemToArray,函...

  • JavaScipt常见面试题收录

    一. 1.一道常被人轻视的前端JS面试题考察知识点 : 变量提升,this指针指向,运算符优先级,原型,继承,全局...

  • 浅析JS继承方法

    JS 实现继承的方法有:1.原型链继承2.构造函数继承3.组合继承(原型链继承 + 构造函数继承)4.原型式继承(...

  • 对于js的prototype(原型)及其一些衍生的理解

    在js中是没有类的,今天就在想一个问题在js中如何实现继承然后在网上看到一个方法引起了 我对js原型链的兴趣 然后...

  • 【IMWeb秋招训练营】【Day8】面试题总结

    经典面试题 29.JavaScript如何实现继承? 原型链 通过将一个类型的实例赋值给另一个构造函数的原型来实现...

  • 四、js实现继承的几个方法

    1. 原型链 原型链是实现继承的主要方法,它是利用原型,让一个引用类型继承另一个应用类型的属性和方法。 实现原型链...

网友评论

    本文标题:一道面试题的深思,实现一个 JS 原型方法

    本文链接:https://www.haomeiwen.com/subject/viipjxtx.html