typeof和instanceof的区别以及应用场景

1.typeof主要是用来检测一些简单的数据类型的
2.instanceof主要是用来检测一些复杂数据类型的更加的准确
3.还有一种检测数据类型的Object.prototype.toString.call(传入你判断的变量)这种方法检测数据比较全部 但是缺点就是IE兼容性较低

 <script>
        //typeof :主要是用来检测一些简单的数据类型比如(布尔、string、number、undefined、unll 等等...)
        //instanceof:主要是用来检测一些复杂的数据类型比如(Array、Object、function 等等....)
        var a = 10; //Number;
        var a = 'hao'; //string;
        var a = undefined; //undefined;
        var a = true; //boolean
        var a = [1, 2]; //Object
        var a = {}; //Object
        var a = new Object; //Object
        var a = function() {
                console.log(11);
            } //function
        var a = null; //object
        console.log(typeof a);
        //1.从上面可以看出来我们的typeof来检测一些简单数据类型可以准确的反映出对应的数据类型,但是复杂数据类型只能返回的是Object 比如这里的数组则返回的是Object而不是准确的Array 这时候typeof就有些力不从心了

        // 2.instanceof能准确的返回对应的复杂数据类型 
        // instanceof语法介绍: 你需要吧你判断的变量放在instanceof之前 同时你要吧你判断的类型放在instanceof之后 如果结果是属于你判断的类型则返回true如果不是则返回的是false
        var a = [1, 2];
        console.log(a instanceof Array); //true
        console.log(a instanceof Number); //false 因为a对应的数据类型不是数字型而是数组型
        var a = {};
        console.log(a instanceof Object); //true
        // instanceof还能检测出是不是new 构造函数对象的实例化
        function preom(uname, age) {
            this.uname = uname;
            this.age = age
        }
        var pr = new preom('浩哥', 20)
        console.log(pr instanceof preom); //true pr是preom的构造函数实例对象 所以返回true

        // 3.Object.prototype.toString.call(传入你判断的变量) 这个方法检测数据类型比较全面 缺点就是IE浏览器兼容性低
        var a = [1, 2];
        console.log(Object.prototype.toString.call(a)); //[object Array]
        var a = {};
        console.log(Object.prototype.toString.call(a)); //[object Object]
    </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值