• JS判断数据类型


    1.typeof

    通常用来判断基本数据类型,它返回表示数据类型的字符串(返回结果只能包括number,boolean,string,function,undefined,object); 

    *注意,使用typeof来判断null和引用类型 返回的结果都是 'object'

    1. typeof 1 //number
    2. typeof 'a' //string
    3. typeof true //boolean
    4. typeof undefined //undefined
    5. typeof null //object
    6. typeof {} //object
    7. typeof [1,2,3] //object
    8. function Fn(){}
    9. typeof new Fn() //object
    10. typeof new Array() //object

    2.instanceof

    使用instanceof,如:a instanceof A 根据instanceof的定义:判断参照对象(大写字母A)的prototype属性所指向的对象是否在被行测对象a的原型链上,instanceof 只能用来判断两个对象是否属于实例关系,而不能判断一个对象实例具体属于哪种类型

    1. function A(name,age){
    2. this.name = name;
    3. this.age = age;
    4. }
    5. a = new A('张三',18);
    6. console.log(a instanceof A) //true
    7. obj = new Object()//创建一个空对象obj
    8. //或者通过字面量来创建:
    9. obj = {}
    10. console.log(obj instanceof Object); // true
    11. arr = new Array() //创建一个空数组arr 或arr = []
    12. console.log(arr instanceof Array ); // true
    13. date = new Date()
    14. console.log(date instanceof Date ); // true
    15. // 注意:instanceof后面一定要是对象类型,instanceof前面相当于它的实例对象,
    16. // 后面的对象类型大小写不能写错,该方法试用一些条件选择或分支

    ​​​​​​​3.根据constructor判断 

    1. console.log('数据类型判断 - constructor');
    2. let num = 23;
    3. let date = new Date();
    4. let str = "biu~";
    5. let reg = new RegExp();
    6. let bool = true;
    7. let fn = function () {
    8. console.log(886);
    9. };
    10. let udf = undefined;
    11. let nul = null;
    12. let array = [1, 2, 3];
    13. console.log(num.constructor); // [Function: Number]
    14. console.log(date.constructor); // [Function: Date]
    15. console.log(str.constructor); // [Function: String]
    16. console.log(bool.constructor); // [Function: Boolean]
    17. console.log(fn.constructor); // [Function: Function]
    18. console.log(reg.constructor); // [Function: RegExp]
    19. console.log(array.constructor); // [Function: Array]

    4.通过Object下的toString.call()方法来判断 

    在《你不知道的javaScript》(中卷)中讲到:所有typeof返回值为"object"的对象,都包含一个内部属性[[Class]],我们可以把他看作一个内部的分类,而非传统意义上面向对象的类,这个属性无法直接访问,一般通过Object.prototype.toString(…)来查看。并且对于基本数据类类型null,undefined这样没有原生构造函数,内部的[[Class]]属性值仍然是NullUndefined 

    1. Object.prototype.toString.call();
    2. console.log(toString.call(123)); //[object Number]
    3. console.log(toString.call('123')); //[object String]
    4. console.log(toString.call(undefined)); //[object Undefined]
    5. console.log(toString.call(true)); //[object Boolean]
    6. console.log(toString.call({})); //[object Object]
    7. console.log(toString.call([])); //[object Array]
    8. console.log(toString.call(function(){})); //[object Function]

    5、jq中判断数据类型的方法 

    1. jQuery提供了一系列工具方法,用来判断数据类型,以弥补JavaScript原生的typeof运算符的不足。以下方法对参数进行判断,返回一个布尔值。
    2. jQuery.isArray();是否为数组
    3. jQuery.isEmptyObject();是否为空对象 (不含可枚举属性)。
    4. jQuery.isFunction():是否为函数
    5. jQuery.isNumberic():是否为数字
    6. jQuery.isPlainObject():是否为使用“{}”或“new Object”生成对象,而不是浏览器原生提供的对象。
    7. jQuery.isWindow(): 是否为window对象;
    8. jQuery.isXMLDoc(): 判断一个DOM节点是否处于XML文档中。

  • 相关阅读:
    js正则表达式
    第四章:指令系统
    SpringBoot事务详解
    Java学习Go(入门)
    上海控安iTB系列产品推介:iTB-AUTO汽车信息安全检测平台
    持续集成Jenkins安装部署
    【STL】:list的模拟实现
    JS事件监听器
    CentOS 7迁移Tencent OS 2.4 tk
    【多媒体技术与实践】数据无损压缩编码
  • 原文地址:https://blog.csdn.net/slow097/article/details/125534544