type of 和 instanceof

本文详细解析typeof和instanceof在JavaScript中的使用,涵盖基本类型检测、引用类型识别、函数类型辨识以及原型链检测。通过实例演示,揭示了null和对象的特殊性以及它们在类型判断中的角色。
  • typeof可以检测那些类型--返回字符串number/string/...

  • 识别所有值类型--Undefined/ Number/ String/ Boolean/Symbol
  • 识别函数类型(也是一种特殊的引用类型)。原理:object内部定义了一个call方法,有call方法返回function,否则返回object
  • 判断是否为引用类型(不可再细分)--null / Array / object
  • 注意!!!null是基本数据类型也可以说是一种特殊的引用数据类型(指向空地址),之所以typeof null会返回object,是因为null的机器码后三位为000;
        console.log(typeof(a));              //undefined
        console.log(typeof(123));            //number
        console.log(typeof(true));           //boolean
        console.log(typeof('abc'));          //string

        console.log(typeof(function(){}));   //function
        console.log(typeof Array);           //function

        console.log(typeof(null));           //object
        console.log(typeof({}));             //object
        console.log(typeof(new Date()));     //object
        console.log(typeof([]));             //object
        /* 用new方法实例化的对象 */
        var str1 = new String('hello')
        console.log(str1);//object--key: value ->0: h, 1: e,...
  • instanceof 检测数据类型--返回true / false

instanceof 的检测方式基于原型链上的构造函数(constructor)来判断

原型链了解CSDN

        console.log([] instanceof Array);               //true
        console.log({} instanceof Object);              //true
        console.log(new Date() instanceof Date);        //true
        console.log(null instanceof Object);            //false
        function Person() {}
        console.log(new Person instanceof Person);      //true

        console.log([] instanceof Object);              //true
        console.log(new Date() instanceof Object);      //true
        console.log(new Person() instanceof Object);    //true
  • 基于原型对象的检测方法--Object.prototype.toString.call()
        console.log(Object.prototype.toString.call([]));    //[object Array]
        console.log(Object.prototype.toString.call(null));  //[object Null]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值