风华正茂、时光流逝、真爱时光、努力创建辉煌。

【原生】封装一个判断数据类型的函数的方法,准确判断一个数据的类型

 

 

        // 判断一个数据类型的函数封装的方法,obj是用来接收传入的参数的
        function gettype(obj) {
            var type = typeof obj;

            if (type !== 'object') {
                return type;
            }
            //如果不是object类型的数据,直接用typeof就能判断出来

            //如果是object类型数据,准确判断类型必须使用Object.prototype.toString.call(obj)的方式才能判断
            return Object.prototype.toString.call(obj).replace(/^\[object (\S+)\]$/, '$1');   
                    //.replace(/^\[object (\S+)\]$/, '$1');  主要是把  第一个对象去掉
        }

 

 

 

HTML文件实例

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>判断一个数据类型</title>
</head>

<body>

    <h1>判断一个数据类型 </h1>
    <h3>Object.prototype.toString.call(obj)</h3>

    <script>

        // 分别输入测试
        var undf;

        var a = [];   //数组
        var b = "474";   //字符
        var c = new Object();   //对象
        var d = new Number(6)   //数字
        var e = NaN   //非数字,但是是数据类型
        var d=function(){};
        var f=Symbol("key") ;
        var g=null;
        var i=undefined;




        // 判断一个数据类型的函数封装的方法,obj是用来接收传入的参数的
        function gettype(obj) {
            var type = typeof obj;

            if (type !== 'object') {
                return type;
            }
            //如果不是object类型的数据,直接用typeof就能判断出来

            //如果是object类型数据,准确判断类型必须使用Object.prototype.toString.call(obj)的方式才能判断
            return Object.prototype.toString.call(obj).replace(/^\[object (\S+)\]$/, '$1');
            //.replace(/^\[object (\S+)\]$/, '$1');  主要是把  第一个对象去掉
        }




        console.log(gettype(a));
        console.log(gettype(b));
        console.log(gettype(c));
        console.log(gettype(e));
        console.log(gettype(d));
        console.log(gettype(f));
        console.log(gettype(g));
        console.log(gettype(i));



        // /////////////////////////////////////

    
        function type(target) {
            var ret = typeof (target);
            var template = {
                //包装类、对象、数组
                "[object Number]": "number - object",
                "[object String]": "string - object",
                "[object Boolean]": "boolean - object",
                "[object Object]": "object",
                "[object Array]": "array"
            }
            //找出 null
            if (target === null) {
                return null;
            }
            if (ret == "object") {
                var str = Object.prototype.toString.call(target);
                return template[str];
            } else {
                //原始值 和 function
                return ret;
            }
        }
      
console.log(11111111111111111111111111111111111111111)
        console.log(type(a));
        console.log(type(b));
        console.log(type(c));
        console.log(type(e));
        console.log(type(d));
        console.log(type(f));
        console.log(type(g));
        console.log(type(i));



    </script>
</body>

</html>

  

posted @ 2019-09-30 16:27  野马,程序源改造新Bug  阅读(504)  评论(0编辑  收藏  举报