js检测数据类型的方法


前言

既然学习了JavaScript,那一定要会检测数据类型。但是检测数据类型的方法不止一种,并且每种方法判断的数据类型也有局限性。所以接下来,为大家总结一下。
分别是typeof,instanceof,constructor。


一、typeof

typeof返回值是一个字符串,该字符串说明运算数的类型。返回结果只有以下几种number,string,boolean,object,undefined,function
无法判断object,array,null,因为返回的是object

	//1、数字类型
	console.log(typeof 1);      //number
	//2、字符串类型
	console.log(typeof '123');  //string
    //3、布尔类型
    console.log(true);          //true
    //4、数组,对象,null
    var arr = []
    console.log(typeof arr);    //object
    var obj = {}
    console.log(typeof obj);    //object
    console.log(typeof null);   //object
    //5、函数
    function fn(){}
    console.log(typeof fn);     //function

二、instanceof

instanceof是用来判断数据是否是某个对象的实例,返回一个布尔值false,true

<div></div>
	function Phone(name, color, play) {
        this.name = name
        this.color = color
        this.play = play
    }
    var phone = new Phone('oppo', 'red', function () { console.log('玩'); })
    console.log(phone instanceof Object);
    console.log(document.getElementsByTagName('div')[0] instanceof Object);
    console.log(window instanceof Object);
    var obj = {}
    console.log(obj instanceof Object);
    console.log(new Date() instanceof Object);
    var arr = []
    console.log(arr instanceof Object);
    var fun = function () { }
    console.log(fun instanceof Object);

不过这个方法有一个缺点,就是不能直接判断nullundefined
因为原型链继承的关系,instanceof会把数组都识别为Object对象。
另外基本数据类型不是object,而引用数据卡类型是object。

三、constructor

任何对象都有constructor属性。

	//创建一个函数
	var fun = function () {

    }
    // 判断数据类型  constructor
    console.log(fun.constructor); // Function() { [native code] }
    var num = 10
    console.log(num.constructor == Object); // false

缺点:该方法只能判断是否是对象。


总结

以上就是今天的内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值