zoukankan      html  css  js  c++  java
  • js常用的几种类型检测方式

    类型检测方式

    平时数据类型都是清晰明了的,但有些功能函数还是需要用到类型检测,现总结一下几种常见的类型检测方式:
    1. typeof
    2. instanceof
    3. Object.prototype.toString

      typeof:

      通常只记得适合基本类型,

      

      不要忘了还有函数对象

       

      还有只能大致判断的Object相关的

        

      还有一个非主流的null

        

      那么多个object,谁是谁呢?

       instanceof:

      A instanceof B: 

        A: 基本类型就直接GG,false,必须是个对象

        B:要么是个对象,要么是个构造函数

        跨平台iframe、不同window一样GG;

        代表是A的原型链上是否有B的prtotype属性(有点拗口,用lol简单点就是判断英雄A(奥巴马)有没有B(破败)的被动来判断是否已经买了B(破败),好吧也不太准确词穷)

          

        所以说这个null有点日怪;

        instanceof最主要的还是判断这个原型链上的关系:

          这个是亲生的

          

           也许你会想这样

          

          因为这是个假老王,

           

          好吧,来个借腹生子的,

          

          

          关键在于改变了ls.__proto__的指向

          

          怎么生一窝呢?

          

          

          

          

          还是把构造器弄回来吧

          

          太懒了,箭头都不想打了

         Object.prototype.toString:

          原型链倒数第二层Object上的方法,原型链没有__proto__就没有再下一层了,再找是null了

          

          怎么用呢,借助call或者apply吧,

            Object.prototype.toString.apply();

            Object.prototype.toString.call();

           

          这个在ie678还是不撑头,null和undefined还会返回"[object Object]";

      

      

  • 相关阅读:
    Python_Crawler_Foundation1-2_MYSQL_Regular Expression
    Linux_Best Practice_01_Ubuntu_set prox_set Repositories
    python_Note_Preview_01
    Python_Note_Day 10_Coroutine
    Python_Note_Day 9_threading.Thread_multiprocessing.Process_Queue
    Linux_学习_Day4_user/group/permission
    Linux_学习_Day3_bash
    Linux_学习_Day2~3
    Python_Note_Day 8_socket
    Python_Note_Day 7_Advanced Class
  • 原文地址:https://www.cnblogs.com/dansingal/p/6843534.html
Copyright © 2011-2022 走看看