美文网首页
类数组与typeof底层自行实现[JavaScript_014]

类数组与typeof底层自行实现[JavaScript_014]

作者: 六亲不认的步伐 | 来源:发表于2019-03-18 19:50 被阅读0次

类数组


  • 定义: 输出的结果类似于数组,但是不能调用数组的方法
  • 例如:
    function test() {
    console.log(arguments); //此时输出的arguments类似于数组,为[1,2,3,4,5,6]
}
test(1, 2, 3, 4, 5, 6);
  • 组成部分:属性要为索引(数字)属性,必须有length属性

面试题(回答obj的构成)


    var obj = {
    "2": "a",
    "3": "b",
    "length": 2,
    "push": Array.prototype.push
}
obj.push('c');
obj.push('d')

结果为:

var obj = {
    "2": "c",
    "3": "d",
    "length": 4,
    "push": Array.prototype.push
}

原理:深入理解Push()原理

typeof实现(工具)


function type(target) {
    var compare = {
        "[object Array]": "Array",
        "[object Object]": "object",
        "[object Number]": "number-object",
        "[object Boolean]": "boolean-object",
        "[object String]": "string-object"
    }
    if (target === null) {
        return "null";
    }
    if (typeof(target) == "object") {
        var str = Object.prototype.toString.call(target);
        return compare[str];
    } else {
        return typeof(target);
    }
}

相关文章

  • 类数组与typeof底层自行实现[JavaScript_014]

    类数组 定义: 输出的结果类似于数组,但是不能调用数组的方法 例如: 组成部分:属性要为索引(数字)属性,必须有l...

  • String类源码解读

    string类是final类型的不可变类。 实现原理:底层实现为final类型的char数组 设计亮点: 1.ha...

  • JDK1.8关于HashMap的变化

    底层实现原理 ++1.7++HashMap底层是使用数组+链表实现 ++1.8++HashMap底层是使用数组+链...

  • 2018-08-08

    集合类的底层实现原理 1、ArrayList底层实现和原理 首先了解线性表、数组的概念。 线性表:最基本、最简单、...

  • ArrayList

    一.ArrayList概述 ArrayList 底层数据结构是基于数组实现的List类,我们知道数组是定长的,但是...

  • Java集合

    首先需要明确的是接口只是定义了方法的标准与规范,父类才决定了具体的底层实现 数组的局限性 定长,数组索引越界(Ar...

  • Java集合之Set

    Java集合之Set 关系图如下 虚线为接口继承 实线为类继承 Set实现类之一HashSet类 数组结构,底层实...

  • ArrayList原理分析

    1、简介 ArrayList,它是List接口的一个实现类。底层是基于数组实现的,可以实现动态扩容,所以又称为动态...

  • ArrayList和LinkedList的区别

    1.底层实现层面: ArrayList底层是由数组实现,是一个动态数组,而LinkedList底层是一个双向链表。...

  • 2018-08-08

    java集合类的底层实现 LinkedList底层实现和原理 LinkedList类是List接口的实现类,它是一...

网友评论

      本文标题:类数组与typeof底层自行实现[JavaScript_014]

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