zoukankan      html  css  js  c++  java
  • 面试之:判断js类型的方式总结

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title>判断js类型的方式</title>
        </head>
        <body>
            <script type="text/javascript">
                // 先引出2个概念
                /*
                    1、基本数据类型(存放在栈中):Undefined、Null、Boolean、Number、String、Symbol (ES6新增)
                    2、引用数据类型(存放在堆内存中的对象,每个空间大小不一样,要根据情况进行特定的配置):Object 类型 【Object类型、Array类型、Date类型、RegExp类型、Function类型】
                    引用类型的值是保存在 堆内存(Heap)中的对象(Object)
                    与其他编程语言不同,JavaScript 不能直接操作对象的内存空间(堆内存)
                */
               // 1、typeof
               let  a = [1,2,3,4],
                    b = 5,
                    c = 'test',
                    d = function() {
                        console.log('我是函数')
                    },
                    e = true,
                    f = null,
                    g;
                    h = Symbol(42);
                    j = new Date()
                    console.log(typeof(a)); // object
                    console.log(typeof(b)); // number
                    console.log(typeof(c)); // string
                    console.log(typeof(d)); // function
                    console.log(typeof(e)); // boolean
                    console.log(typeof(f)); // object
                    console.log(typeof(g)); // undefined
                    console.log(typeof(h)); // symbol
                    console.log(typeof(j)); // object
                // 2、instanceof 判断该对象是谁的实例;内部机制是通过判断对象的原型链上是否能找到对象的proptype; 
                // object instanceof constructor
                console.log({} instanceof Object)              // true
                console.log([] instanceof Array)               // true
                console.log(/aa/g instanceof RegExp)           // true
                console.log(function(){} instanceof Function)  // true
                // 3、 js原生方法 Object.prototype.toString.call()常用于判断浏览器内置对象 它可以给出数据的确切类型,相比typeof要精确
                // 面试点:实现一个函数clone,可以对js中的5种主要的数据类型(包括number string object array Boolean)进行值复制 
                console.log(Object.prototype.toString.call(a)) // [object Array]
                console.log(Object.prototype.toString.call(b)) // [object Number]
                console.log(Object.prototype.toString.call(c)) // [object String]
                console.log(Object.prototype.toString.call(d)) // [object Function]
                console.log(Object.prototype.toString.call(e)) // [object Boolean]
                console.log(Object.prototype.toString.call(f)) // [object Null]
                console.log(Object.prototype.toString.call(g)) // [object Undefined]
                console.log(Object.prototype.toString.call(h)) // [object Symbol]
                console.log(Object.prototype.toString.call(j)) // [object Date]
                // 4.判断是否为数组 Array.isArray() [IE8及以下版本不支持此API] 还需要用到 Object.prototype.toString.call(arr) === "[object Array]";
            </script>
        </body>
    </html>
  • 相关阅读:
    mysql show profiles 使用分析sql 性能
    面向对象三大特征---封装、继承、多态
    http_build_query用法,挺方便的
    请求数据
    多模匹配算法之Aho-Corasick
    php命名空间如何引入一个变量类名?
    MySQL错误:Can't connect to MySQL server (10060)
    Vim完全教程
    路由
    wireshark
  • 原文地址:https://www.cnblogs.com/lhl66/p/13815985.html
Copyright © 2011-2022 走看看