zoukankan      html  css  js  c++  java
  • 如何正确的检测对象类型?

    在 javascript 中,我们常常用 typeof 运算符来检测对象的类型,在使用 typeof 检测引用类型的存储值会出现一个问题,无论引用的是什么类型的对象,它都会返回 "object"。这个时候我们往往会使用 instanceof instanceof 可以明确的检测某个存储值是否为指定的类型,例如:

    1 console.log([1, 2, 3, 4, 5] instanceof Array)   // 输出 "true"

    通常来说 instanceof 就是判断一个实例是否属于某种类型,例如:

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

    至于 instanceof 其他的应用场景这里暂时不提,那么还有什么方法可以检测对象的类型呢?
    那就是 Object.prototype.toString.call(obj),例如:

    console.log(Object.prototype.toString.call("jerry"));//[object String]
    console.log(Object.prototype.toString.call(12));//[object Number]
    console.log(Object.prototype.toString.call(true));//[object Boolean]
    console.log(Object.prototype.toString.call(undefined));//[object Undefined]
    console.log(Object.prototype.toString.call(null));//[object Null]
    console.log(Object.prototype.toString.call({name: "jerry"}));//[object Object]
    console.log(Object.prototype.toString.call(function(){}));//[object Function]
    console.log(Object.prototype.toString.call([]));//[object Array]
    console.log(Object.prototype.toString.call(new Date));//[object Date]
    console.log(Object.prototype.toString.call(/d/));//[object RegExp]
    function Person(){};
    console.log(Object.prototype.toString.call(new Person));//[object Object]
  • 相关阅读:
    0diff算法参考资料
    js 对象属性值
    一些带有设计模式的优秀代码
    vue 配置多页面
    cms 管理系统
    网络技术:EtherChannel 链路汇聚
    网络技术:VLAN 中继协议(VTP)
    网络管理:管理信息库
    网络管理:抽象语法表示 ASN.1
    网络管理:基本编码规则(BER)
  • 原文地址:https://www.cnblogs.com/huoxiao/p/10307946.html
Copyright © 2011-2022 走看看