• 技术文章 >web前端 >js教程

    JavaScript类型判断的方法介绍(代码示例)

    不言不言2019-03-18 11:02:00转载638
    本篇文章给大家带来的内容是关于JavaScript类型判断的方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

    JS数据类型判断

    有的时候需要判断数据类型,应对各种复杂的逻辑判断,先来个咱们最常用的。

    1.typeof

    typeof操作符返回一个字符串,并表示该变量的类型。

    typeof oper / typeof (operand)

    var testString = 'adus',
        testArray = [],
        testBoolean = true,
        testNumber = 0,
        testObject = {},
        testNull = null,
        testUndefined = undefined
        
    console.log(typeof testString);//string
    console.log(typeof testArray);//object
    console.log(typeof testBoolean);//boolean
    console.log(typeof testNumber);//number
    console.log(typeof testObjec);//object
    console.log(typeof testNull);//object
    console.log(typeof testUndefined);//undefined

    当然不只有上面的这些基础类型,还有下面这些:

    Symbol (ECMAScript 6 新增) "symbol"

    宿主对象(由JS环境提供) Implementation-dependent

    函数对象([[Call]] 在ECMA-262条款中实现了) "function"

    咦?有点不对,为什么数组、null等都是object呢???请往下看

    Function或者Array这些类型的实例的时候,其实都是基于Object实例进行的一种扩展。只是多了一些特有属性。

    在 JavaScript 最初的实现中,JavaScript 中的值是由一个表示类型的标签和实际数据值表示的。对象的类型标签是 0。

    由于 null 代表的是 空指针(大多数平台下值为 0x00)。

    因此,null的类型标签也成为了 0,typeof null就错误的返回了"object"。(reference)

    2.instanceof

    instanceof运算符用于测试构造函数的prototype属性是否出现在对象的原型链中的任何位置,通俗点说就是一个变量是否某个对象的实例。

    object instanceof constructor

    object 要检测的对象 / constructor 构造函数

    function fnc(){}
    var newFnc = new fnc();
    console.log(newFnc.__proto__ == fnc.prototype);//true
    console.log( newFnc instanceof fnc ) //true
    
    
    /*String对象和Date对象都属于Object类型和一些特殊情况*/
    
    var simpleStr = "This is a simple string"; 
    var myString  = new String();
    var newStr    = new String("String created with constructor");
    var myDate    = new Date();
    var myObj     = {};
    var myNonObj  = Object.create(null);
    
    simpleStr instanceof String; // 返回 false, 检查原型链会找到 undefined
    myString  instanceof String; // 返回 true
    newStr    instanceof String; // 返回 true
    myString  instanceof Object; // 返回 true
    
    myObj instanceof Object;    // 返回 true, 尽管原型没有定义
    ({})  instanceof Object;    // 返回 true, 同上
    myNonObj instanceof Object; // 返回 false, 一种创建对象的方法,这种方法创建的对象不是Object的一个实例
    
    myString instanceof Date; //返回 false
    
    myDate instanceof Date;     // 返回 true
    myDate instanceof Object;   // 返回 true
    myDate instanceof String;   // 返回 false

    3.Object.prototype.toString()

    每个对象都有一个toString()方法,当该对象被表示为一个文本值时,或者一个对象以预期的字符串方式引用时自动调用。默认情况下,toString()方法被每个Object对象继承。如果此方法在自定义对象中未被覆盖,toString() 返回 "[object type]",其中type是对象的类型。

    Function.prototype.call( thisArg ) / Function.prototype.apply( thisArg )

    传递要检查的对象作为第一个参数,称为thisArg。

    var toString = Object.prototype.toString;
    
    toString.call(new Date); // [object Date]
    toString.call(new String); // [object String]
    toString.call(Math); // [object Math]
    
    //Since JavaScript 1.8.5
    toString.call(undefined); // [object Undefined]
    toString.call(null); // [object Null]

    在合适的场景用恰当的方法,会很省心,也能保证代码的简洁、健壮。

    以上就是JavaScript类型判断的方法介绍(代码示例)的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:segmentfault,如有侵犯,请联系admin@php.cn删除
    专题推荐:javascript
    上一篇:JavaScript常用数据类型的概念介绍 下一篇:Angular是什么
    大前端线上培训班

    相关文章推荐

    • JavaScript执行上下文的详细介绍(附代码)• JavaScript实现简单的Ps滤镜效果(附代码)• JavaScript高阶函数的详细介绍(附代码)• JavaScript常用数据类型的概念介绍

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网