zoukankan      html  css  js  c++  java
  • js类型比较

    比较数据类型做比较的三种方法typeofinstanceofObject.prototype.toString.call()

    javascript七大类型

    javascript的数据类型分为两类:原始类型和对象类型。

    原始类型(6个)

    四个普通类型:数字(number)、字符串(string)、布尔值(bool)、Symbol(ES6新增类型)
    两个特殊原始值:空(null)、未定义(undefined)

    对象类型(object)

    每个属性都由 <key:value>构成,value可以是任意类型(包括对象类型)

    typeof操作符获取类型

    typeof 返回值有 objectbooleanundefinednumberstringsymbolfunction

    • 确定不可以判断null,也不可以获取到具体的类型
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    console.log(typeof 42);


    console.log(typeof 'blubber');
    // expected output: "string"

    console.log(typeof true);
    // expected output: "boolean"

    console.log(typeof declaredButUndefinedVariable);
    // expected output: "undefined";

    let aa = null;
    console.log(typeof aa);
    // expected output: "object"

    instanceof操作符

    instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上。
    参考资料

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25大专栏  js类型比较n>
    26
    // 定义构造函数
    function (){}
    function D(){}

    var o = new C();


    o instanceof C; // true,因为 Object.getPrototypeOf(o) === C.prototype


    o instanceof D; // false,因为 D.prototype不在o的原型链上

    o instanceof Object; // true,因为Object.prototype.isPrototypeOf(o)返回true
    C.prototype instanceof Object // true,同上

    C.prototype = {};
    var o2 = new C();

    o2 instanceof C; // true

    o instanceof C; // false,C.prototype指向了一个空对象,这个空对象不在o的原型链上.

    D.prototype = new C(); // 继承
    var o3 = new D();
    o3 instanceof D; // true
    o3 instanceof C; // true 因为C.prototype现在在o3的原型链上

    • 可以确定当前数据是否是某个对象(Object)
    • 缺点:无法确定原始类型是否是原始类型

    通过Object.prototype.toString.call()判断类型

    这种判断算是比较靠谱的,可以判断出数据的七大类型以及内置对象(DateJson等)

    1
    2
    3
    4
    5
    6
    Object.prototype.toString.call(null); // "[object Null]"
    Object.prototype.toString.call(undefined); // "[object Undefined]"
    Object.prototype.toString.call(“abc”);// "[object String]"
    Object.prototype.toString.call(123);// "[object Number]"
    Object.prototype.toString.call(true);// "[object Boolean]"
    Object.prototype.toString.call(Symbol());// "[object Symbol]"

  • 相关阅读:
    我的数学之美(一)——RANSAC算法详解
    机器学习经典算法之-----最小二乘法(zz)
    基于大数据的餐饮推荐系统总结
    Hive 数据错位修复方案
    Python 2.x 判断 Excel 是否包含指定的 sheet
    Shell脚本判断目录是否为空
    MySQL启动报错 The server quit without updating PID file 解决方案
    DolphinScheduler 1.3.2集群版(基于CDH5.13.1)安装手册
    添加 Shell 脚本的启动用户限制
    CentOS 7 离线安装 MySQL 5.7
  • 原文地址:https://www.cnblogs.com/lijianming180/p/12037781.html
Copyright © 2011-2022 走看看