• JavaScript-数据类型判断-typeof与-instanceof的区别


    要判断数据类型-就要先知道js有哪些数据类型:

    主要分两类:

    值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol(ES6 引入了一种新的原始数据类型,表示独一无二的值)。

    引用数据类型:对象(Object)、数组(Array)、函数(Function)。

    常用的判断数据类型的方法:

    1、typeof

    首先,使用typeof看一下各个类型的输出:

    <script>
      console.log(typeof(123));               // number
      console.log(typeof(true));              // boolean
      console.log(typeof('demo'));            // string
      console.log(typeof(undefined));         // undefined
      console.log(typeof(Symbol('id')));      // symbol
      console.log(typeof(function(){}));      // function
      console.log(typeof(null));              // object
      console.log(typeof([]));                // object
      console.log(typeof({}));                // object
    </script>

    typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型。它返回值是一个字符串,该字符串说明运算数的类型。

    从上面可以看出,使用typeof判断数据类型时,对于null、[]、{}的数据类型判断都是object。在使用 typeof 运算符时采用引用类型存储值,无论引用的是什么类型的对象,它都返回 "object"。

    所以对于这些数据类型的判断得不到真实的数据类型,因此引入了instanceof

    2、instanceof

    与 typeof 方法不同的是,instanceof 方法要求开发者明确地确认对象为某特定类型。用来判断一个构造函数的prototype属性所指向的对象是否存在另外一个要检测对象的原型链上。

    用法:object(要检测的对象) instanceof constructor(某个构造函数)

    // 判断 foo 是否是 Foo 类的实例
    function Foo(){} 
    var foo = new Foo(); 
    console.log(foo instanceof Foo)//true

    也可以用instanceof 在继承关系中用来判断一个实例是否属于它的父类型。

    // 判断 foo 是否是 Foo 类的实例 , 并且是否是其父类型的实例
    function Aoo(){} 
    function Foo(){} 
    Foo.prototype = new Aoo();//JavaScript 原型继承
     
    var foo = new Foo(); 
    console.log(foo instanceof Foo)//true 
    console.log(foo instanceof Aoo)//true
  • 相关阅读:
    junit基础学习之-多线程测试(6)
    junit基础学习之-参数初始化(5)
    junit基础学习之-junit3和4的区别(4)
    junit基础学习之-断言注解(3)
    junit基础学习之-测试service层(3)
    java 实例 货币格式
    java md5 数据加密
    java 选择一个类,返回该实例对象
    java 输出为2的倍数的方法
    java 实例 设计一个方法,计算一个数的n次幂
  • 原文地址:https://www.cnblogs.com/liangpi/p/12526007.html
Copyright © 2020-2023  润新知