自定义封装一个方法让这个方法可以判断所有的数据类型并返回

简介: 自定义封装一个方法让这个方法可以判断所有的数据类型并返回
<script>
    function getType(obj) {
        let type = typeof obj;
        if (type !== "object") {
            return type;
        }
        if(Object.prototype.toString.call(obj).length === 13){
            return Object.prototype.toString.call(obj).slice(-5,-1);
        }
        if(Object.prototype.toString.call(obj).length === 14){
            return Object.prototype.toString.call(obj).slice(-6,-1);
        }
        return Object.prototype.toString.call(obj).slice(-7,-1);
    }
    console.log(getType(null));
    console.log(getType(1));
    console.log(getType('123'));
    console.log(getType(false));
    console.log(getType([1,2,3,4]));
    console.log(getType({a:123}));
    console.log(getType(null));
    console.log(getType(undefined));
    console.log(getType(()=>{}));
</script>

65ecf52634e1454c8fd10e53254f134b.png


首先方法通过 type 判断 是基础类型还是 复杂数据类型 如果是基本数据类型就直接返回基本数据类型 但是这里的null 也算object 并且 Object.prototype.toString.call(obj)的返回值格式是[ object object/null/Array ] 因为后面的个数不同 所以 在这里根据的是Object.prototype.toString.call的返回值长度来判断是Null还是object还是Array  这样根据不同的判断可以获取到所有的返回值 并且不会带空格

相关文章
|
7月前
通过反射获取方法返回的类型
通过反射获取方法返回的类型
|
4月前
|
Go 数据处理
深入理解函数返回多个值的机制
【8月更文挑战第31天】
12 0
|
7月前
|
C++
【C++】istream类型对象转换为逻辑条件判断值
【C++】istream类型对象转换为逻辑条件判断值
【C++】istream类型对象转换为逻辑条件判断值
|
7月前
|
JSON Java API
java 写一个循环不断请求接口A判断返回值是否符合条件,不符合等待30秒继续请求判断
java 写一个循环不断请求接口A判断返回值是否符合条件,不符合等待30秒继续请求判断
196 0
|
7月前
|
小程序
小程序封装组件简单案例,所有小程序适用(传入参数、外抛事件、传入样式)
小程序封装组件简单案例,所有小程序适用(传入参数、外抛事件、传入样式)
96 0
|
前端开发 Java 数据库
SpringBoot返回枚举对象中的所有属性以对象的形式返回(一个@JSONType解决)
SpringBoot返回枚举对象中的所有属性以对象的形式返回(一个@JSONType解决)
798 0
|
Java 编译器
重载的方法能否根据返回类型进行区分?
重载的方法不能根据返回类型进行区分。方法的重载是基于方法名称和参数列表来进行区分的,与返回类型无关。这是因为在Java中,编译器在确定要调用哪个重载方法时,仅根据传递给方法的参数来进行决策。
372 0
|
前端开发
前端解决后端接口返回数组类型数据为空的报错
前端解决后端接口返回数组类型数据为空的报错
516 0
前端解决后端接口返回数组类型数据为空的报错
|
小程序 前端开发 数据库
小程序__01--后端返回类型是一个object具体类,前端小程序如何提取类中的私有变量
后端返回类型是一个object具体类,前端小程序如何提取类中的私有变量
|
测试技术 Android开发
怎么知道方法的参数有哪些类型呢?
怎么知道方法的参数有哪些类型呢?
214 0