zoukankan      html  css  js  c++  java
  • JavaScript 学习之 instanceOf, typeOf 运算符

    JavaScript的类型,分成原生类型和对象。其中,null, undefined, boolean(true, false), number, string是原生类型,而其他的都是对象(包括数组、类、函数)。而instanceOf是一个二元操作符,左侧是一个对象,右侧是对象的类型。所以把原生类型放在左右侧都是不合适的,instanceOf会返回false。


    如下的例子帮助理解:

            function test_instaceOf() {
    
                var num = 1;
                console.log(num instanceof Number);             // false*
                console.log(num instanceof Object);             // false*
                console.log(Number(num) instanceof Number);     // false*
                console.log(Number(num) instanceof Object);     // false*
                console.log(1 instanceof Number);               // false*
                console.log(NaN instanceof Number);             // false*
                console.log("" instanceof String);              // false*
                console.log(String("abc") instanceof String);   // false*
    
                console.log(new Number(num) instanceof Number);     // true
                console.log(new Number(num) instanceof Object);     // true
                console.log(new Number(1) instanceof Number);       // true
                console.log(new Number(NaN) instanceof Number);     // true
                console.log(new String("") instanceof String);      // true
                console.log(new String("abc") instanceof String);   // true
    
                console.log({} instanceof Object);              // true
                console.log([] instanceof Object);              // true
                console.log([] instanceof Array);               // true
    
                console.log(new Object(null) instanceof Object);   // true
                console.log(null instanceof Object);               // false
                console.log(undefined instanceof Object);          // false
    
                try {
                    console.log(undefined instanceof undefined);
                } catch (e) {
                    console.log("exception");                   // exception!
                }
            }
    
    注意,只有使用了new关键字,才能把原生类型正真转换成对象(相当于wrap在对象里面),而简单的类型转换(用Number, String)是没用的。

    另外, typeOf操作符,是一元操作符,可以用来检测原生类型,他接受任意类型,返回的是一个字符串(小写):

            function test_typeof() {
                console.log(typeof 1);                              // number
                console.log(typeof true);                           // boolean
                console.log(typeof "string");                       // string
                console.log(typeof new Date(2001, 1, 1));           // object
                console.log(typeof new RegExp("reg expression"));   // object
                console.log(typeof function () { });                // function
                console.log(typeof {});                             // object
                console.log(typeof []);                             // object
                console.log(typeof null);                           // object
                console.log(typeof undefined);                      // undefined
                console.log(typeof NaN);                            // number
            }



  • 相关阅读:
    visual studio 2013 中配置OpenCV2.4.13 姿势
    全栈技能图谱
    Lua 基础
    Lua手动编译姿势
    字符串专题:几种奇怪的算法
    字符串专题:KMP POJ 3561
    字符串专题:后缀数组
    字符串专题:map POJ 1002
    2015安徽省赛 G.你来擒孟获
    求方程解问题
  • 原文地址:https://www.cnblogs.com/puncha/p/3876970.html
Copyright © 2011-2022 走看看