• 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
  • 相关阅读:
    hdu 4947
    hdu 4946
    hdu 4944
    hdu 4942
    hdu 4941
    PAT 【L2-011 玩转二叉树】
    PAT【L2-006 树的遍历】
    XYNUOJ 【2070: 重建二叉树】
    XYNUOJ 【1367: 二叉链表存储的二叉树】
    XYNUOJ 2390【二叉树遍历2】
  • 原文地址:https://www.cnblogs.com/liangpi/p/12526007.html
Copyright © 2020-2023  润新知