zoukankan      html  css  js  c++  java
  • js instanceof和typeof的区别及简单用法

    js中判断一个变量的类型,通常的做法是用typeof方法,看它返回的是 什么,但是对于数组和对象它返回的都是object,ECMAScript引入了java中的instanceof 方法来弥补这一缺陷,来判断该变量是否是某种类型,它的返回值只有truefalse。

    一、typeOf

    二、instanceof

    1 [] instanceof Object //false
    2 
    3 [] instanceof Array //true
    4 
    5 {} instanceof Object  // true
    6 
    7 {} instanceof Array // false

    结合这两种方法,可以通过封装函数来判断某个变量的类型

     1 function getDataType(obj) {
     2         if(obj === null){
     3             return "null";
     4         }else if(typeof obj === "object"){
     5             if(obj instanceof Array){
     6                 return "array";
     7             }else{
     8                 return "object";
     9             }
    10         }else{
    11             return typeof obj;
    12         }
    13     }
    14 
    15     console.log(getDataType(111)); //number
    16     console.log(getDataType("fasd"));//string
    17     console.log(getDataType(true));//boolean
    18     console.log(getDataType(function () { }));//function
    19     console.log(getDataType([]));//array
    20     console.log(getDataType({}));//object
    21     console.log(getDataType(null));//null
    22     console.log(getDataType(undefined));//undefined
    23     console.log(getDataType(/
    /));//object
    24     var a;
    25     console.log(getDataType(a));//undefined 如果传入没有声明的变量会直接报错

    对于instanceof更复杂的用法有必要去深究一下,这里就不班门弄斧了

    不积跬步无以至千里
  • 相关阅读:
    Vue 单向数据流&双向数据绑定原理
    Arguments对象
    类数组对象(array-like objects)
    ...theArgs剩余参数
    vue 深度选择器/deep/报错(标红)
    修改mandMobile下拉菜单样式
    PC端input maxlength 失效问题
    el-input 正则限制输入为非负整数
    Mac鼠标左右键都是右键
    Vue双向数据绑定简易实现
  • 原文地址:https://www.cnblogs.com/lyt0207/p/11812658.html
Copyright © 2011-2022 走看看